如果对象不在数据库中,如何级联持久化,否则合并?

时间:2014-03-08 02:21:08

标签: java-ee jpa eclipselink

@Entity
public class Auction{
    @ManyToOne(cascade=CascadeType.MERGE)
    private Member seller;

    @OneToOne(cascade=CascadeType.PERSIST)
    private Question question;
}

@Entity
public class Member{

}

@Entity
public class Question{
    @ManyToOne(cascade=CascadeType.MERGE)
    private Member personAsking;

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private long id;
}



em.persist(auction);

如果成员不存在,如何保留成员,否则合并(更新)成员?

2 个答案:

答案 0 :(得分:0)

添加到您的Auction.seller字段CascadeType.PERSIST。像这样:

@Entity
public class Auction{
    @ManyToOne(cascade={CascadeType.MERGE, CascadeType.PERSIST})
    private Member seller;

    .....
}

答案 1 :(得分:0)

使用CascadeType.merge,并使用EntityManager.merge()。合并将检查实体是否是新的并且适当地插入或更新,并且级联操作将以相同的方式对引用的实体起作用。