Details
-
Bug
-
Resolution: Done
-
Major
-
JBossAS-4.0.1 SP1
-
None
Description
I added a left-join entry in jbosscmp-jdbc.xml file for a dynamic query. The generated query is correct, but the data for the bean corresponding to the CMR field defined in read-ahead/left-join are loaded from database, not from read ahead cache.
The dynamic-ql query is:
2005-03-08 13:19:36,455 DEBUG org.jboss.ejb.plugins.cmp.jdbc.JDBCDynamicQLQuery.Subject#ejbSelectAllChoosableSubjects DYNAMIC-QL:
SELECT OBJECT(s) FROM Subject AS s
WHERE s.id > 0 AND s.deprecated IS NULL
ORDER BY s.categoryId, s.name ASC
Corresponding fragment in jbosscmp-jdbc.xml is:
<query>
<query-method>
<method-name>ejbSelectAllChoosableSubjects</method-name>
<method-params>
<method-param>java.lang.String</method-param>
<method-param>java.lang.Object[]</method-param>
</method-params>
</query-method>
<dynamic-ql/>
<read-ahead>
<strategy>on-find</strategy>
<eager-load-group>*</eager-load-group>
<left-join cmr-field="subjectcategory" eager-load-group="*"/>
</read-ahead>
</query>
Generated query:
2005-03-08 13:19:36,463 DEBUG org.jboss.ejb.plugins.cmp.jdbc.JDBCDynamicQLQuery.Subject#ejbSelectAllChoosableSubjects Executing SQL:
SELECT t0_s.id, t0_s.name, t0_s.author, t0_s.lastModified, t0_s.comments, t0_s.deprecated, t0_s.categoryId, t0_s.pos, t1_s_subjectcategory.id,
t1_s_subjectcategory.name, t1_s_subjectcategory.pos, t0_s.categoryId, t0_s.name
FROM SUBJECT t0_s
LEFT OUTER JOIN SUBJECTCATEGORY t1_s_subjectcategory ON t0_s.categoryId=t1_s_subjectcategory.id
WHERE t0_s.id > 0 AND t0_s.deprecated IS NULL
ORDER BY t0_s.categoryId ASC, t0_s.name ASC
A fragment from server.log file:
2005-03-08 13:19:36,692 DEBUG org.jboss.ejb.plugins.cmp.jdbc.JDBCFindByPrimaryKeyQuery.Subjectcategory#findByPrimaryKey Executing SQL: SELECT t0_Subjectcategory.id FROM SUBJECTCATEGORY t0_Subjectcategory WHERE t0_Subjectcategory.id=?
2005-03-08 13:19:37,641 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.Subjectcategory] Executing SQL: SELECT name FROM SUBJECTCATEGORY WHERE (id=?)
2005-03-08 13:19:37,763 DEBUG org.jboss.ejb.plugins.cmp.jdbc.JDBCFindByPrimaryKeyQuery.Subjectcategory#findByPrimaryKey Executing SQL: SELECT t0_Subjectcategory.id FROM SUBJECTCATEGORY t0_Subjectcategory WHERE t0_Subjectcategory.id=?
2005-03-08 13:19:37,765 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.Subjectcategory] Executing SQL: SELECT name FROM SUBJECTCATEGORY WHERE (id=?)