假设我有以下实体
@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;
}
}
其中Countryclass 映射到预设的主表,不应修改。用户可以在创建新origin的. 如何检查提供的是否已经是主表中的条目?codeItemcode
如果我只是persist()一个新Item的带有一个code不存在而没有坚持的孩子,一个org.hibernate.TransientObjectException将被报告。我是否只需要尝试捕获此异常以将其视为不存在的主数据?或者有没有更好的选择?
在实际情况下,对象中有很多这些子实体Item,我认为明确地逐个查找主数据不是一个好主意。而且我认为这也不是一个好的解决方案。