[jboss-user] [JBoss Seam] - entity-query vs. Manager-nested @Factory List
quilian
do-not-reply at jboss.com
Wed Apr 25 08:43:16 EDT 2007
Hi all!
I declared the following in components.xml:
<framework:entity-query name="alleBenutzer" ejbql="select benutzer from BenutzerImpl benutzer" />
i assumed that this would also do the trick:
|
| @Stateful
| @Scope(ScopeType.SESSION)
| @Name("gruppenManager")
| public class GruppenManagerImpl implements Serializable, GruppenManager {
| @PersistenceContext(type = PersistenceContextType.EXTENDED)
| private EntityManager em;
|
| @DataModel // (scope=ScopeType.PAGE)
| private List<GruppeImpl> gruppenList;
|
| @Factory(value = "gruppenList")
| public void findGruppen() {
| gruppenList = em.createQuery("select gruppe from GruppeImpl gruppe order by id").getResultList();
| }
| ...
| }
|
I use s:selectItems and s:convertEntity to show the list of Gruppen:
| <h:selectOneMenu id="selectGruppenAuswahl" value="#{selectedBenutzer.gruppe}" required="true">
| <s:selectItems id="gruppenAuswahl" value="#{alleGruppen}" var="gruppeItem" label="#{gruppeItem.label}"/>
| <s:convertEntity />
| </h:selectOneMenu>
|
however, when using gruppenList instead of alleGruppen as value for s:selectItems the form looks like before, but on submission, i get this well know validation failed error:
selectGruppenAuswahl is not a valid entry.
The interesting this is, i get this only if i dont select another entry from the list. In that case i get the "detached entity passed to persist" exception, which happens anyway after the validation is complete. But thats for another posting. The this is the validation gets through if i select another entry.
I thought the two ways to do the query would be more or less interchangeable.
I dont know why, but the logged select statements are different for the two options:
for the framework:entity-query
| 11:05:16,984 INFO [STDOUT] Hibernate: select gruppeimpl0_.id as id5_, gruppeimpl0_.name as name5_, gruppeimpl0_.version as version5_, gruppeimpl0_.status as status5_ from gruppen gruppeimpl0_
| 11:05:21,734 INFO [STDOUT] Hibernate: select gruppeimpl0_.id as id5_, gruppeimpl0_.name as name5_, gruppeimpl0_.version as version5_, gruppeimpl0_.status as status5_ from gruppen gruppeimpl0_
|
and for the @Factory solution:
| 11:01:42,593 INFO [STDOUT] Hibernate: select gruppeimpl0_.id as id1_, gruppeimpl0_.name as name1_, gruppeimpl0_.version as version1_, gruppeimpl0_.status as status1_ from gruppen gruppeimpl0_
| 11:01:44,312 INFO [STDOUT] Hibernate: select gruppeimpl0_.id as id1_0_, gruppeimpl0_.name as name1_0_, gruppeimpl0_.version as version1_0_, gruppeimpl0_.status as status1_0_ from gruppen gruppeimpl0_ where gruppeimpl0_.id=?
|
I completely dont understand this. But it might be a clue. The first query is done when the page loads, whereas the latter is called when the form is submitted.
The generated HTML forms also differ in the selection index - the value which the client selects. The ordering is not the same. Could this be a reason?
Thanks for any help.
Tobias Kilian
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4040563#4040563
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4040563
More information about the jboss-user
mailing list