I have successfully created a dataTable based on two different DB tables with a 1:1
relationship. I need to know for CRUD purposes, how will it be possible to update the DB
in a JSF/Seam/EJB3 framework this app is currently in.
Specifically, as in the pic below, you see that the user can change multiple columns in
multiple rows for one of the entities (in this case only the CreditCard data can be
updated, the Customer data is read-only).
I've seen in the hotel booking example that you inject the instance of the entity bean
that had its setter methods called when the form was submitted in the JSF. In this case,
it's not just one row that's being set and updated, it's potentially multiple
rows in one transaction/use-case.
Does Seam support this? If so, how can I persist multiple rows/entity instances in a
single transaction? It seems that I must inject the entire List of modified rows/entities
into the SFSB first.
See partial code below:
CustomerAction.java (SFSB):
| @DataModel
| private List<Customers> customers;
|
| @DataModelSelection
| private Customers customer;
|
| @Factory("customers")
| public void find()
| {
|
| customers = em.createQuery("select c, cc "+
| "from Customers c inner join c.creditCard as cc "+
| "where c.userId = :userId")
| .setParameter("userId", user.getUserId())
| .getResultList();
|
| }
myJSF.xhtml:
| <h:form>
|
| <h:dataTable value="#{customers}" var="customer"
| bgcolor="#F1F1F1" border="10" width="100%"
cellpadding="0" cellspacing="0"
| dir="LTR" frame="hsides">
| <h:column>
| <f:facet name="header">First Name</f:facet>
|
| <h:outputText value="#{customer[0].firstName}"/>
| </h:column>
|
| <h:column>
| <f:facet name="header">Last Name</f:facet>
|
| <h:outputText value="#{customer[0].lastName}"/>
| </h:column>
|
| <h:column>
| <f:facet name="header">Street Name</f:facet>
| <h:outputText value="#{customer[0].streetName}"/>
| </h:column>
|
| <h:column>
| <f:facet name="header">CC #</f:facet>
|
| <h:inputText value="#{customer[1].creditcardnumber}"/>
| </h:column>
|
| <h:column>
| <f:facet name="header">Company Name</f:facet>
|
| <h:inputText value="#{customer[1].companyname}"/>
| </h:column>
|
|
| </h:dataTable>
|
| <h:commandButton value="submit"
action="#{customerAction.submit}"/>
| </h:form>
[
img]http://i145.photobucket.com/albums/r234/rabiesjoy/java/multi-table-da...]
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4092127#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...