After some further investigation I'm now able to do what I want. I can now 
modify multiple rows at once in one transaction.

My SLSB with an added update() method:
@Stateless
  | @Name("recordList")
  | public class RecordListAction implements RecordList, Serializable {
  | 
  |     private static final long serialVersionUID = 1L;
  | 
  |     @PersistenceContext
  |     private EntityManager em;
  | 
  |     @In
  |     private User user;
  | 
  |     @DataModel
  |     private List<DataValue> dataValues;
  | 
  |     @In
  |     private FacesMessages facesMessages;
  | 
  |     // needed to prevent spurious warning
  |     // getResultList() returns a non generic version of List
  |     @SuppressWarnings("unchecked")
  |     @Factory("dataValues")
  |     public void getDataValues() {
  |             dataValues = em.createQuery(
  |                             "select dv from DataValue dv "
  |                                             + "inner join dv.record as 
record "
  |                                             + "inner join dv.dataType as 
dataType "
  |                                             + "where record.user.id = 
:userId")
  |                             .setParameter("userId", user.getId())
  |                             .getResultList();
  |     }
  | 
  |     @TransactionAttribute
  |     public void update() {
  |             for (DataValue dataValue : dataValues) {
  |                     em.merge(dataValue);
  |             }
  |             facesMessages.add("Data successfully saved.");
  |     }
  | 
  |     @Remove
  |     public void destroy() {
  |     }
  | }

My corresponding facelet:
                <h:form>
  |                     <rich:panel>
  |                             <f:facet name="header">Edit Data</f:facet>
  | 
  |                             <ui:repeat var="dataValue" 
value="#{dataValues}">
  | 
  |                                     <s:decorate id="idDecoration" 
template="layout/edit.xhtml">
  |                                             <ui:define name="label">
  |                                                     <h:outputText 
value="#{dataValue.dataType.name}" />
  |                                             </ui:define>
  | 
  |                                             <h:inputText 
value="#{dataValue.value}" />
  |                                     </s:decorate>
  | 
  |                             </ui:repeat>
  | 
  |                             <div style="clear: both"><span 
class="required">*</span>
  |                             required fields</div>
  |                     </rich:panel>
  | 
  |                     <div class="actionButtons"><h:commandButton
  |                             action="#{recordList.update}" value="submit" 
/></div>
  |             </h:form>

Everything fine so far, but I'm now stucked at validating entered data. The 
actual data is stored in the column "value" of the table "data_value". The 
column "value" is a varchar(255) in MySQL but its validation rules depend on 
"data_type_id" which references the table "data_type".

To give you an example:
There are 2 entries in "data_type". One is a type for e-mail addresses and one 
for surnames. This results in different validation rules that have to be 
applied to the same column in table "data_value".

Again I'm asking for some hints how to do so. Has anyone some suggestions?

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4109528#4109528

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4109528
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to