[jboss-user] [JBoss Seam] - Handling dynamic data in RDBMS (i.e. no direct column mappin
tailor
do-not-reply at jboss.com
Thu Nov 29 20:50:57 EST 2007
Hi all,
I'm actually a bloody beginner in Seam but somehow managed to succesfully develop my first web app in Seam. Right now I'm trying to solve a problem where I need some further advice.
I have chosen a somewhat dynamic approach to save additional data of a user in the RDBMS. There are four main tables.
user (id, name)
| record (id, user_id)
| data_value (id, record_id, data_type_id, value)
| data_type (id, name, description)
|
| The data_type table is a simple table that holds a list of possible fields so to say where you can save values for. Those values should be saved for a user. Each user has its own record which consists of defined data_types. The relation data_value brings it all together, this is where the actual values for the defined data_values are stored.
|
| According SQL Create-Statements (MySQL): http://pastebin.com/f5883f89d
| According Entity Beans: http://pastebin.com/m501ed44e
|
| I created a SLSB to retrieve a list of "DataValue" objects from the db.
|
| @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;
| |
| | // 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();
| | }
| |
| | @Remove
| | public void destroy() {
| | }
| | }
|
| I am able to output this list in a facelet.
|
| <h:dataTable id="dataValues" var="dataValue" value="#{dataValues}" rendered="#{dataValues.rowCount gt 0}">
| | <h:column>
| | <f:facet name="header">Name</f:facet>
| | <h:outputText value="#{dataValue.dataType.name}" />
| | </h:column>
| | <h:column>
| | <f:facet name="header">Value</f:facet>
| | <h:outputText value="#{dataValue.value}" />
| | </h:column>
| | </h:dataTable>
| And now it comes to the interesting part (finally!). I want to be able to modify (for now; creating and deleting should be integrated later) the "DataValue" objects. Everything I did before was straightforward, i.e. retrieve one row of a table and edit its columns. But now I retrieve one or more rows with two columns (one with the data_type.name and one with the data_value.value) and want to edit them.
|
| I currently do not know where to start solving this problem. Maybe anyone of you can give me some hints to start?
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4109113#4109113
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4109113
More information about the jboss-user
mailing list