1

我有以下数据库模型:

A| 1..* ------ 0..1 | B

与以下实体:

A:

@JoinColumn(name = "B", referencedColumnName = "id")
@ManyToOne
private B singleB;

乙:

@OneToMany(mappedBy = "B")
private List<A> aList;

然后我试图为A创建一个新的B:

...
b.prepareCreate(existingA);
dao.create();
...

方法:

public void prepareCreate(A existingAObject) {
    b = new B();
    b.setAList(new ArrayList());
    b.getAList.add(existingAObject);
}

public void create() {
    getEntityManager().persist(b);
}

然后它抛出异常。长话短说:我想为现有的 A 创建一个新的 B,但 Hibernate 正在尝试创建一个新的 A。我认为这是一个注释问题,但不确定如何。

更新:

向我们展示如何获得现有的 AObject。- 来自数据库(existingA = em.find(id));

还要意识到如果要保存 A 和 B 之间的关联,则必须设置 A.singleB,因为它是关联的拥有方。- 试过了,仍然得到异常

并向我们​​展示 B 实体的完整代码:它的 ID 是什么?它是如何产生的?

很简单:

public class B implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id", nullable = false)
    private Integer id;

    @OneToMany(mappedBy = "B")
    private List<A> aList;


    @XmlTransient
    public List<A> getAList() {
        return eventos;
    }

    public void setAList(List<A> aList) {
        this.aList= aList;
    }

}

4

0 回答 0