異常org.hibernate.QueryException: could not resolve property的原因
異常訊息如下:
Exception in thread "main" org.hibernate.QueryException: could not resolve property: deptid of: org.jsoft.vo.Dept
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:67)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:61)
at org.hibernate.persister.entity.AbstractEntityPersister.getSubclassPropertyTableNumber(AbstractEntityPersister.java:1392)
at org.hibernate.persister.entity.BasicEntityPropertyMapping.toColumns(BasicEntityPropertyMapping.java:54)
at org.hibernate.persister.entity.AbstractEntityPersister.toColumns(AbstractEntityPersister.java:1367)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumns(CriteriaQueryTranslator.java:457)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumnsUsingProjection(CriteriaQueryTranslator.java:417)
at org.hibernate.criterion.SimpleExpression.toSqlString(SimpleExpression.java:68)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getWhereCondition(CriteriaQueryTranslator.java:357)
at org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:113)
at org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:82)
at org.hibernate.loader.criteria.CriteriaLoader.<init>(CriteriaLoader.java:91)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1578)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:306)
at org.jsoft.test.UpdateUser.main(UpdateUser.java:18)
這裡,關鍵是“ deptid of: org.jsoft.vo.Dept ”,deptid為資料庫中表的欄位,異常時說在查詢的時候無法解析這個欄位,也就是說這個欄位是錯誤的。
由於MyEclipse能夠進行Hibernate對映,並自動生成持久化類和對應的配置檔案,對於類似於deptid 或者 dept_id中帶有下劃線的欄位,則自動將下劃線去掉,deptid在持久化類中對應屬性為deptId,所以,在Dao中編寫查詢的方法中,必須寫成
criteria.add(Restrictions.eq("taskNo",task.getTaskNo()));
這裡eq()方法的第一個引數對應於持久化類中的屬性名稱,如果使用下面:
criteria.add(Restrictions.eq("deptId",1);
就可能發生上面的異常,千萬要小心。
一般地,如果涉及到屬性型別無法解析的異常,可能出現問題的地方有:
資料庫欄位與持久化類對映檔案,以及持久化類檔案中屬性名稱或者型別可能不相匹配;
持久化類對映檔案中屬性型別可能有問題,比如,如果使用Java型別,注意大寫(如type="java.lang.String"),如果使用Hibernate型別,使用小寫(如type="string")。
相關文章
- jedis異常:Could not get a resource from the pool
- MQTT異常掉線原因MQQT
- Java新增構造方法異常異常——Could not autowire. there is more than one bean of '' typeJava構造方法Bean
- 網站流量異常變動的8種常見原因網站
- Oracle JOB異常中斷原因分析Oracle
- oracle出異常:Io 異常: The Network Adapter could not establish the connection 解決辦法OracleAPT
- Mybatis單個引數的if判斷(針對異常:There is no getter for property..)MyBatis
- java 空指標異常造成的原因有哪些Java指標
- 請教:castor MappingException: Could not find the class異常ASTAPPException
- 【DataGuard】 TNS:could not resolve the connect identifier specifiedIDE
- Could not initialize class sun.awt.X11GraphicsEnvironment異常處理
- java.lang.IllegalArgumentException: Could not find class異常解決方式JavaException
- Could not resolve host: 'localhost 報錯解決辦法localhost
- 伺服器程式異常的原因分析(第二篇)伺服器
- 異常資訊解決:Could not obtain transaction-synchronized Session for current threadAIsynchronizedSessionthread
- 生產系統 SQL 執行異常原因分析SQL
- 關於java中空指標異常的原因及解決方法Java指標
- 網站流量異常變動的8種常見原因及解決建議網站
- 淺談Categroy不能為原類新增Property的原因
- Mysql異常刨析:Could not commit JDBC transaction;No operations allowed after statement closedMySqlMITJDBC
- java.sql.SQLException: Io 異常: The Network Adapter could not establish the connecJavaSQLExceptionAPT
- ORA-12154: TNS:could not resolve service name / TNS-03505: Failed to resolve nameAI
- 異常-throws的方式處理異常
- 異常-編譯期異常和執行期異常的區別編譯
- AndroidStudio升級報錯Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve cAndroidAPPCompile
- Centos7中Could not resolve host: mirrorlist.centos.org; 未知的錯誤"CentOS
- yml:java.lang.IllegalArgumentException: Could not resolve placeholder ‘jdbc.driverClassName‘JavaExceptionJDBC
- 異常篇——異常處理
- 異常和異常呼叫鏈
- 微軟開始修正Outlook同步異常問題 未透露故障原因微軟
- 異常重啟怎麼破?多方排查後,原因竟然是。。。
- CollectionView 的異常View
- [jvm]常見的oom異常JVMOOM
- Java 異常(二) 自定義異常Java
- Java checked異常和unchecked異常。Java
- hadoop啟動時,報ssh: Could not resolve hostname xxx: NamHadoop
- ORA-12154: TNS:could not resolve the connect identifier specifiedIDE
- ORA-12154: TNS: could not resolve the connect identifier specifiedIDE