【发布时间】:2015-08-20 08:39:22
【问题描述】:
在 OneToMany 关系中将实体与其子实体持久化时遇到问题。 这是我的两个实体:
@Entity
@Table(name="USER")
public class User implements Serializable {
...
@Id
@Column(name="ID_USER")
private String idUser;
@OneToMany(mappedBy="user", cascade=CascadeType.PERSIST)
private List<Address> address;
public List<Address> getAddress() {
return this.address;
}
public void setAddress(List<Address> address) {
this.address = address;
}
public Address addAddress(Address address) {
getAddress().add(address);
address.setUser(this);
return address;
}
public Address removeAddress(Address address) {
getAddress().remove(address);
address.setUser(null);
return address;
}
...
}
@Entity
@Table(name="ADDRESS")
public class Address implements Serializable {
...
@EmbeddedId
private AddressPK id;
@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name="ID_USER", insertable=false, updatable=false, nullable=false)
private User user;
public User getUser() {
return this.user;
}
public void setUser(User user) {
this.user = user;
}
}
@Embeddable
public class AddressPK implements Serializable {
...
@Column(name="ID_USER", insertable=false, updatable=false)
private String idUser;
...
}
现在生成 ORA-02291 错误的持久化操作:
User u = new User();
u.setAddress(new ArrayList<Address>());
u.set...
Address a1 = new Address();
a1.set...
u.addAddress(a1);
Address a2 = new Address();
a2.set...
u.addAddress(a2);
entityManager.persist(u);
有解决这个问题的办法吗?
谢谢大家!
【问题讨论】:
-
不知道这个问题?
标签: hibernate one-to-many ora-02291