有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Hibernate持久映射

我有3个表AB和映射表A_B,其中包含(A_IDB_ID)的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(B)的对象。现在我想持久化A(A)的一个对象以及这两个对象(ab)之间的关联。我的代码如下:

@PersistenceContext(unitName = "demoPU")
private EntityManager em;

B b = em.createNamedQuery(queryName, B); // Getting obj of B
A a = new A();
A_B ab = new A_B();
ab.setB(b); // Setting B in relationship
a.setAb(ab);

em.persist(a);

然而,这试图再次坚持b&;由于其id已设置,因此会引发异常:

org.hibernate.PersistentObjectException: detached entity passed to persist

你能让我知道在这种情况下,我如何保持关联而不必再次保持B吗


共 (1) 个答案