多对多下拉列表

问题描述:

我是hibernate/jsf的noobie,所以我想知道标准的处理方式是处理以下(相当标准的)场景。多对多下拉列表

我有2类:

public Class Appointment 
    Client client; 
    Date date; 

public Class Client 
    String name; 
    String address; 

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

常见的极端任务。不,你不想要很多,这意味着同一个约会可以有多个客户。尝试是这样的:

豆:

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> 
+0

谢谢,这看起来像我会尝试。 – Dave 2012-07-17 14:27:47

我想你只能使用多对一的映射,因为只有客户端可以有很多约会,如果我得到你想要做的事情,约会是特定于唯一客户端的。所以你必须使用一对多注释,也不要忘记指定mappedBy属性,使您可以相对于从双方的作用

祝你好运,我的英语水平遗憾:■

+0

但是,创造一个新的约会,我将需要的客户名单时使用的客户端的下拉列表中,并且获得这个(我认为)的唯一方法是使用多对多关系,即使正常关系是许多约会的客户。这是我不确定的。无论如何,谢谢你的回答。 – Dave 2012-07-16 20:31:47

+0

我不这么认为,通过这种方式,你不会对你的项目有一个好的概念,要将客户列表传递到你的下拉列表中,你必须在你的控制器中实例化一个客户列表并将它作为参数传递到你的jsp,jsf ...(取决于你使用的技术,通过resquest参数,modelattributes或其他的东西,这取决于你使用的是什么 – maouven 2012-07-16 20:43:54

+0

我认为我可以在我的AppointmentBean中创建一个方法,返回一个全部列表。客户我只是想知道处理这种情况(我想是很常见的)的标准方法是 – Dave 2012-07-16 21:08:57