另一个“超然实体继续坚持”的例外

时间:2012-11-22 20:36:49

标签: java hibernate

我有以下数据库模型:

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

使用以下实体:

A:

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

B:

@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.我认为这是一个注释问题但不确定如何。

更新:

告诉我们你如何获得现有的对象。 - 来自数据库(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;
    }

}

0 个答案:

没有答案