我们目前使用的是seam框架。我们在注释实体时遇到了一点麻烦。我们有一个Deal实体,它有一个Tag实体子实体。我们对实体的注释如下:
@Entity
public class Deal implements Serializable {
private Tag tag;
@ManyToOne
public Tag getTag() {
return tag;
}
public void setTag(Tag tag) {
this.tag = tag;
}
}
标签实体就像;
@Entity
@Table(uniqueConstraints = { @UniqueConstraint(columnNames = "label") })
public class Tag implements Serializable {
private String label;
public void setLabel(String tagLabel) {
this.label = tagLabel;
}
public String getLabel() {
return label;
}
}
用例是;我们有默认值来标记交易。用户通过自动补全输入框搜索标签。如果没有匹配,他/她输入自己的免费标签。当他/她持久化交易实体时,如果数据库中没有存储的标签,则持久化标签实体,否则引用存储的标签实体到交易实体。
我们可以注释符合这个用例的实体吗?还是全部关于业务逻辑?
恐怕没有这样直接使用级联的方法。您需要分配一个具有正确id的实体,要么通过查找它,要么通过创建一个获取id但没有级联的新实体。