最近,我使用Apache Isis来构建我的DDD项目。
现在,我有一个实体对象Customer,我认为Customer可能有很多值对象,例如。 CustomerContactInfomation。
public class Customer extends AbstractEntityObject{
@Column(allowsNull = "false")
@Getter
private String name;
@Column(allowsNull = "false")
@Getter
private String idcard;
@Column(allowsNull = "false")
@Getter
private CustomerIdType idtype;
public Customer(String name,String idcard,CustomerIdType idtype) {
this.name = name;
this.idcard = idcard;
this.idtype = idtype;
}
@Persistent(mappedBy="customer",dependentElement="false")
@Column(allowsNull="true")
@Setter @Getter
private CustomerContactInfomation contact;
}
public class CustomerContactInfomation {
@PrimaryKey
@Column(name = "customerId")
@Getter
private Customer customer;
@Column(allowsNull = "true")
@Setter @Getter
private String phone;
}
CustomerContactInfomation只是一个Value Object,它不能有任何操作,应由Customer维护。
Customer-CustomerContactInfomation肯定是1-1。
现在,我应该如何在Customer中显示CustomerContactInfomation并能够编辑CustomerContactInfomation?
答案 0 :(得分:0)
我不确定我是否将CustomerContactInformation描述为一个值对象...它有一个主键,因此它使其成为一个持久化实体,其手机属性也是可变的。
但是把它放在一边......我认为应该可以获得你之后的效果。您可能已经看过,该框架将Customer#contact属性呈现为CustomerContactInformation对象的超链接。为了允许客户维护其电话属性,我建议对客户采取简单的操作,例如:
@MemberOrder(named="contact", sequence="1")
public Customer updateContact(String newPhone) {
this.contact.setPhone(newPhone);
return this;
}
@ MemberOrder#name注释将导致此按钮的动作在联系人属性下呈现。
HTH 丹