Java Hibernate持久映射
我有3个表Java Hibernate持久映射,java,hibernate,jpa,Java,Hibernate,Jpa,我有3个表A,B和映射表A\u B,其中包含这两个表的Id(A\u Id和B\u Id)。以下是映射这3个表的java类的外观: @Entity @Table(name = "A") public class A { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE) @Column(name = "ID") private Long id; @OneToMany(cascade=Cascad
A
,B
和映射表A\u B
,其中包含这两个表的Id(A\u Id
和B\u Id
)。以下是映射这3个表的java类的外观:
@Entity
@Table(name = "A")
public class A {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "ID")
private Long id;
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name = "FK_A", referencedColumnName="Id", nullable = false)
private Set<A_B> ab;
//Other attributes, Getters Setters etc.
}
@Entity
@Table(name = "A_B")
public class A_B {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "ID")
private Long id;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "FK_B", nullable = false)
private B b;
//Other attributes, Getters Setters etc.
}
Entity
@Table(name = "B")
public class B {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "ID")
private Long id;
//Other attributes, Getters Setters etc.
}
然而,它试图再次持久化b&因为它的id已经设置,所以它抛出en异常:
org.hibernate.PersistentObjectException: detached entity passed to persist
您能告诉我,在这种情况下,如何在不必再次保持B的情况下保持关联吗?为什么不尝试只设置a而不设置B 您还可以在中清空集合,这样它就不会试图持久化它
编辑:正如评论中所说,它不会产生预期的效果。您应该使用
saveOrUpdate()
而不是persist()
,如中所建议的那样,只保留a
而不设置ab
将不会保留a
和b
之间的关系。
org.hibernate.PersistentObjectException: detached entity passed to persist