下拉列表中的多对多

时间:2012-07-16 20:05:43

标签: hibernate jsf-2

我是hibernate / jsf的noobie所以我想知道处理以下(相当标准)场景的标准方法是什么。

我有2个班级:

public Class Appointment
   Client client;
   Date   date;

public Class Client
   String name;
   String address;

约会和客户之间存在多对一的关系(客户可以有很多约会)。但是,在创建约会时,我希望用户能够从下拉列表中选择客户端。在我看来,要做到这一点,我需要在预约和客户之间建立多对多的关系。这是标准方法吗?还有其他选择吗?

2 个答案:

答案 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>