Obtenir Hibernate Exception : org.mise en veille prolongée.QueryException: impossible de résoudre propriété
J'ai une table avec clé composite attribut..
Pour ce que j'ai fait 2 haricots pour hibernate annotations mappages..
Maintenant, il fonctionne très bien pour enregistrer, mettre à jour et supprimer..
Mais quand je suis aller chercher de l'aide de certains critères, c'est de me donner "n'a pas pu résoudre propriété" exception.
Mes Haricots sont comme suit :
WBList.java
@Entity
public class WBList {
private WBListPK id;
private String wb;
@Id
public WBListPK getId() {
return id;
}
public void setId(WBListPK id) {
this.id = id;
}
@Column(name = "wb")
public String getWb() {
return wb;
}
public void setWb(String wb) {
this.wb = wb;
}
}
WBListPK.java
@Embeddable
public class WBListPK implements Serializable {
private int rid;
private int sid;
public WBListPK() {
}
public WBListPK(Integer rid, Integer sid) {
this.rid = rid;
this.sid = sid;
}
public int getRid() {
return rid;
}
public void setRid(int rid) {
this.rid = rid;
}
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
}
FindByAll Méthode de Mon DAO est comme suit :
public List<WBList> findByAll(final WBListPK wbListPK, final String wb) {
List results = null;
results = this.hibernateTemplate.executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Criteria criteria = session.createCriteria(WBList.class);
if (wb != null) {
criteria.add(Expression.like("wb", wb));
}
if(wbListPK.getRid()!=0){
criteria.add(Expression.eq("rid", wbListPK.getRid()));
}
if(wbListPK.getSid()!=0){
criteria.add(Expression.eq("sid", wbListPK.getSid()));
}
return criteria.list();
}
});
return results;
}
Je suis à l'appel de cette findByAll méthode de mon contrôleur, le code est :
WBListPK wbListPK = new WBListPK();
WBList wbList = new WBList();
wbListPK.setRid(10);
wbListPK.setSid(20);
List<WBList> wbListList = this.wbListSecurityProcessor.findByAll(wbListPK, "b");
System.out.println("wbListList = "+wbListList);
Quand je suis à l'exécution de code ci-dessus, il me fait exception suivante (avec stacktrace):
org.springframework.orm.hibernate3.HibernateQueryException: could not resolve property: rid of: com.sufalam.mailserver.bean.WBList; nested exception is org.hibernate.QueryException: could not resolve property: rid of: com.sufalam.mailserver.bean.WBList
org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:655)
org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)
org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:343)
com.sufalam.mailserver.dao.WBListDao.findByAll(WBListDao.java:42)
com.sufalam.mailserver.business.WBListProcessor.findByAll(WBListProcessor.java:33)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:196)
$Proxy113.findByAll(Unknown Source)
com.sufalam.mailserver.business.security.WBListSecurityProcessor.findByAll(WBListSecurityProcessor.java:28)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:196)
$Proxy120.findByAll(Unknown Source)
com.sufalam.mailserver.presentation.web.WBListManageController.handleRequest(WBListManageController.java:65)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:781)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:726)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:636)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:545)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
root cause
org.hibernate.QueryException: could not resolve property: rid of: com.sufalam.mailserver.bean.WBList
org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:44)
org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:38)
org.hibernate.persister.entity.AbstractEntityPersister.getSubclassPropertyTableNumber(AbstractEntityPersister.java:1379)
org.hibernate.persister.entity.BasicEntityPropertyMapping.toColumns(BasicEntityPropertyMapping.java:31)
org.hibernate.persister.entity.AbstractEntityPersister.toColumns(AbstractEntityPersister.java:1354)
org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumns(CriteriaQueryTranslator.java:434)
org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumnsUsingProjection(CriteriaQueryTranslator.java:394)
org.hibernate.criterion.SimpleExpression.toSqlString(SimpleExpression.java:45)
org.hibernate.loader.criteria.CriteriaQueryTranslator.getWhereCondition(CriteriaQueryTranslator.java:334)
org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:90)
org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:59)
org.hibernate.loader.criteria.CriteriaLoader.<init>(CriteriaLoader.java:69)
org.hibernate.impl.SessionImpl.list(SessionImpl.java:1554)
org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
com.sufalam.mailserver.dao.WBListDao$1.doInHibernate(WBListDao.java:59)
org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406)
org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:343)
com.sufalam.mailserver.dao.WBListDao.findByAll(WBListDao.java:42)
com.sufalam.mailserver.business.WBListProcessor.findByAll(WBListProcessor.java:33)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:196)
$Proxy113.findByAll(Unknown Source)
com.sufalam.mailserver.business.security.WBListSecurityProcessor.findByAll(WBListSecurityProcessor.java:28)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:196)
$Proxy120.findByAll(Unknown Source)
com.sufalam.mailserver.presentation.web.WBListManageController.handleRequest(WBListManageController.java:65)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:781)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:726)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:636)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:545)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
Merci de m'aider si quelqu'un a des solutions..
Merci d'avance..
donner le code DAO
OriginalL'auteur Nirmal | 2009-12-12
Vous devez vous connecter pour publier un commentaire.
rid
etsid
sont des propriétés du composite à l'identificateur (WbListPK
), et non l'entité elle-même. Vous, par conséquent, besoin de se référer en conséquence:Note le
id.
préfixe. Voir clause where et se référant à la propriété de l'id chapitres en veille prolongée de la documentation pour plus de détails et des exemples (ils traitent les requêtes HQL mais la grande majorité des choses s'applique à des Critères API)Pour les autres qui trébuchent sur ce post parce qu'ils ont de la difficulté avec un alias dans une requête de critères pour une classe qui a un @EmbeddedId, voir: opensource.atlassian.com/projects/hibernate/browse/HHH-4587
OriginalL'auteur ChssPly76
Bien pas vraiment de réponse précise à cette question, mais pourrait aider d'autres personnes qui obtiennent une erreur de ce genre, pour moi c'était à propos de la casse. En d'autres termes, la chaîne nom de la propriété dans les critères que vous donnez a pour correspondre à celui de votre fichier mappeur, par exemple:
J'ai eu l'erreur car j'avais utilisé le "Patient", tandis que mon entité a la propriété de "Patient" et de la table de base de données a le champ "idPatient", alors que j'avais nommé la relation dans le mappeur de fichier en tant que "patient".
Seulement l'affichage, peut-être que cela aidera certaines personnes à l'avenir, parce que j'ai eu sur ce sujet par la saisie de l'erreur dans google.
OriginalL'auteur Arturas M