我是hibernate / jsf的noobie所以我想知道处理以下(相当标准)场景的标准方法是什么。
我有2个班级:
public Class Appointment
Client client;
Date date;
public Class Client
String name;
String address;
约会和客户之间存在多对一的关系(客户可以有很多约会)。但是,在创建约会时,我希望用户能够从下拉列表中选择客户端。在我看来,要做到这一点,我需要在预约和客户之间建立多对多的关系。这是标准方法吗?还有其他选择吗?
答案 0 :(得分:0)
我认为你必须只使用多对一映射,因为只有客户端可以有很多约会,如果我得到你想做的事情,约会是特定于一个独特的客户。所以你必须使用一对多的注释,并且不要忘记指定mappedby属性,以便你的关系可以从双方起作用
祝你好运,对不起我的英语:s答案 1 :(得分:0)
非常常见的任务。不,你不想要多对多,这意味着同一个约会可能有多个客户。尝试类似:
bean:
private Long clientId;
private Date date;
private List<Client> clients;
public List<Client> getClients(){
if(clients == null){
clients = clientDAO.findAll(); // Lazy loading since JSF has a habit of calling the getter multiple times.
}
return clients;
}
// Getters and setters for client and date
public void saveAppointment(){
applicationDAO.createAppointment(date, clientId);
}
xhtml:
<h:selectOneMenu value="#{bean.clientId}">
<f:selectItems value="#{bean.clients}" var="client" itemLabel="#{client.name]" itemValue="#{client.id}"/>
</h:selectOneMenu>