我有兩個具有彼此單向一對多關係的類。一對多關係中的級聯類型問題
public class Offer{
...
@OneToMany(cascade=CascadeType.ALL)
@JoinTable(name = "Offer_Fields",
joinColumns =
@JoinColumn(name = "OFFER_ID"),
inverseJoinColumns =
@JoinColumn(name = "FIELDMAPPER_ID"))
private Set<FieldMapper> fields = new HashSet<FieldMapper>();
}
@Entity
@Table(name = "FieldMapper")
public class FieldMapper implements Serializable {
@Id
@Column(name = "FIELDMAPPER_ID")
@GeneratedValue
private int id;
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "multilingual_field_fk")
private MultiLingual field;
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "multilingual_value_fk")
private MultiLingual value;
}
我想存儲一個帶有一組FieldMapper的提議到數據庫。 當我在一對多使用CascadeType.ALL,我得到這個錯誤:
org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions
,當我改變的CascadeType到別的東西,我得到這個錯誤:
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.RCSTT.library.FieldMapper
這裏是我救發售:
public void insert(Offer offer) throws SQLException {
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
session.save(offer);
tx.commit();
session.close();
}
,我不別的地方使用會話。
in tx.commit();
line throws explain exceptions。
感謝您的幫助。
出於好奇,是一對多關係涉及表中相同的一組列?我只是想知道這在數學上是可能的。 – 2010-05-24 20:24:59
編號 每個類在其自己的表中都有自己的列,但在我的情況下,將創建一個Join表來管理關係(您可以在沒有連接表的情況下創建一對多關係)。 – 2010-05-24 20:43:44
那麼,發佈FieldMapper類的代碼可能會很有用。出於某種原因,我相信這是一個ManyToMany關係。 – 2010-05-25 12:54:34