Question

I did like in this article. The fifth section describes the event as a model to be preserved. I also save on another - like so:

    session.saveOrUpdate(dmodel);
    session.flush();
    session.refresh(dmodel);

And on refresh action i got StackOverFlowException. My models exactly look likes in article, with other names fields, but structure of relation many to many betweetn two tables using third table i took from this article.

What's this? If i did not use refresh method - everything allright.

Item1:

@Entity
@Table(name = "item1")
public class Item1 implements Serializable {

   @Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
@Column(name = "uuid", unique = true)
protected String uuid;

@Column(name = "name")
protected String name;

@Column
protected BigDecimal cost;

@Column(name = "description")
protected String description;

@Column(name = "add_date")
protected Date addDate;

@ManyToOne
@JoinColumn(name="category_id")
protected GiftCategory category;

@OneToMany(fetch = FetchType.EAGER, mappedBy = "pk.item2")
protected Set<Item1Item2> item1item2;

Item2:

@Entity
@Table(name = "item2")
public class Item1Item2 implements Serializable {

@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
@Column(name = "uuid", unique = true)
protected String uuid;

@Column(name = "username")
protected String username;

@Column(name = "birth_date")
protected Date birthDate;

@Column(name = "first_name")
protected String firstName;

@Column(name = "last_name")
protected String lastName;

@Column(name = "middle_name")
protected String middleName;

@Column(name = "address")
protected String address;

@Column(name = "address_visible")
protected boolean addressVisible = false;

@Column(name = "profile_visible")
protected boolean profileVisible = true;

@Column(name = "cellPhone")
protected String cellPhone;

@Column(name = "cellPhone_visible")
protected boolean cellPhoneVisible = false;

@OneToMany(fetch = FetchType.EAGER, mappedBy = "pk.item1", cascade=CascadeType.ALL)
protected Set<Item1Item2> item1item2;

LinkTable:

@Entity
@Table(name = "item1_item2")
@AssociationOverrides({
    @AssociationOverride(name = "pk.item1",
            joinColumns = @JoinColumn(name = "item1_uuid")),
    @AssociationOverride(name = "pk.item2",
            joinColumns = @JoinColumn(name = "item2_uuid")) })
public class SmartUserGift implements Serializable {

@EmbeddedId
protected Item1Item2Pk pk = new Item1Item2Pk ();
}

PK LinkTable:

@Embeddable
public class Item1Item2Pk implements Serializable {
@ManyToOne
private Item1 item1;
@ManyToOne
private Item2 item2;

Stacktrace: First

SEVERE: Servlet.service() for servlet [appServlet] in context with path [] threw               exception [Request processing failed; nested exception is     org.springframework.transaction.TransactionSystemException: Could not roll back Hibernate     transaction; nested exception is org.hibernate.TransactionException: rollback failed] with     root cause
java.io.IOException: Unexpected packet type: 117
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1981)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Connection.executeTransactionCommand(AbstractJdbc2Connection.java:685)
at org.postgresql.jdbc2.AbstractJdbc2Connection.rollback(AbstractJdbc2Connection.java:738)
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doRollback(JdbcTransaction.java:163)
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.rollback(AbstractTransactionImpl.java:209)
at org.springframework.orm.hibernate4.HibernateTransactionManager.doRollback(HibernateTransactionManager.java:574)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:846)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:823)
at org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:493)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:264)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at com.sun.proxy.$Proxy42.store(Unknown Source)

Second

SEVERE: Servlet.service() for servlet [appServlet] in context with path [] threw     exception [Handler processing failed; nested exception is java.lang.StackOverflowError] with     root cause
java.lang.StackOverflowError
    at org.postgresql.jdbc2.AbstractJdbc2Statement.<init>    (AbstractJdbc2Statement.java:145)
at org.postgresql.jdbc3.AbstractJdbc3Statement.<init>(AbstractJdbc3Statement.java:42)
at org.postgresql.jdbc3g.AbstractJdbc3gStatement.<init>(AbstractJdbc3gStatement.java:28)
at org.postgresql.jdbc4.AbstractJdbc4Statement.<init>(AbstractJdbc4Statement.java:32)
at org.postgresql.jdbc4.Jdbc4Statement.<init>(Jdbc4Statement.java:30)

No correct solution

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top