Problème avec une property formula
Bonjour à tous, j'ai un problème avec une formula property
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
<hibernate-mapping>
<class name="RefundingFileImpl"
table="REFUNDING_FILE">
<id name="id" column="ID" unsaved-value="null">
<generator class="increment" />
</id>
<many-to-one name="legalPerson"
class="LegalPersonImpl" cascade="none"
outer-join="auto" update="true" insert="true"
column="LEGAL_PERSON_ID" not-null="true" />
<property name="state" type="java.lang.String" update="true"
insert="true" column="STATE" not-null="true" />
<property name="sort" type="java.lang.String" update="false"
insert="false" not-null="true"
formula="(select rss.VALUE from REFUNDING_STATE_SORT rss where rss.state = state)"
/>
</class>
</hibernate-mapping> |
(J'ai retiré des champs qui n'entrent pas en compte dans le problème)
J'ai une erreur lorsque la requête suivante est effectuée:
Code:
1 2 3 4 5
|
String queryString = "from RefundingFileImpl as rf where rf.legalPerson = ?
Object parameters[] = new Object[] {personId};
List result = null;
result = getHibernateTemplate().find(queryString, parameters); |
Voici l'erreur:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
Hibernate: select refundingf0_.ID as ID, refundingf0_.VERSION as VERSION7_, refundingf0_.LEGAL_PERSON_ID as LEGAL3_7_, refundingf0_.PHYSICAL_PERSON_ID as PHYSICAL4_7_, refundingf0_.SUBMISSION_DATE as SUBMISSION10_7_, refundingf0_.REASON_WHY_FILE_IS_REFUSED as REASON11_7_, (select rss.VALUE from REFUNDING_STATE_SORT rss where rss.state = refundingf0_.state) as formula0_ from REFUNDING_FILE refundingf0_ where refundingf0_.LEGAL_PERSON_ID=? order by refundingf0_.STATE, refundingf0_.SUBMISSION_DATE
ERROR - RefundingFileDAOImpl.findRefundingFilesFromLegalPersonId(69) | problem occured while accessing Files for user 171629 :
org.springframework.orm.hibernate3.HibernateSystemException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of com.notary.app.rmb.model.impl.RefundingFileImpl.setSort; nested exception is org.hibernate.PropertyAccessException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of com.notary.app.rmb.model.impl.RefundingFileImpl.setSort
org.hibernate.PropertyAccessException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of com.notary.app.rmb.model.impl.RefundingFileImpl.setSort
at org.hibernate.tuple.PojoTuplizer.setPropertyValuesWithOptimizer(PojoTuplizer.java:203)
at org.hibernate.tuple.PojoTuplizer.setPropertyValues(PojoTuplizer.java:173)
at org.hibernate.persister.entity.BasicEntityPersister.setPropertyValues(BasicEntityPersister.java:2919)
at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:113)
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:530)
at org.hibernate.loader.Loader.doQuery(Loader.java:436)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
at org.hibernate.loader.Loader.doList(Loader.java:1593)
at org.hibernate.loader.Loader.list(Loader.java:1577)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
[.....]
Caused by: net.sf.cglib.beans.BulkBeanException: java.lang.String cannot be cast to java.lang.Number
at RefundingFileImpl$$BulkBeanByCGLIB$$9f8ad5f5.setPropertyValues(<generated>)
at org.hibernate.tuple.PojoTuplizer.setPropertyValuesWithOptimizer(PojoTuplizer.java:200)
... 75 more
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Number
... 77 more |
Donc j'ai un "java.lang.String cannot be cast to java.lang.Number" mais je ne comprends pas d'où il vient, mon champs "sort" est défini comme un int dans la classe 'RefundingFileImpl' et la colonne "VALUE" de REFUNDING_STATE_SORT est un number, "STATE" est un varchar dans les deux tables. Où se trouve alors cette string dont parle l'erreur?