假设我有以下实体
@Entity
public class Item{
private Country origin;
@ManyToOne(optional=true)
@JoinColumn(name="origin")
public Country getOrigin() {
return this.origin;
}
}
@Entity
public class Country{
private String code;
private String desc;
@Id
public String getCode() {
return this.code;
}
@Column
public String getDesc() {
return this.desc;
}
}
其中Country
class 映射到预设的主表,不应修改。用户可以在创建新origin
的. 如何检查提供的是否已经是主表中的条目?code
Item
code
如果我只是persist()
一个新Item
的带有一个code
不存在而没有坚持的孩子,一个org.hibernate.TransientObjectException
将被报告。我是否只需要尝试捕获此异常以将其视为不存在的主数据?或者有没有更好的选择?
在实际情况下,对象中有很多这些子实体Item
,我认为明确地逐个查找主数据不是一个好主意。而且我认为这也不是一个好的解决方案。