真是点背,遇上这错又要加代码了。
错误如下:
Hibernate: select
C.ORG_ID,
C.ORG_NAME,
B.DRAFT_USER_NAME,
A.DESCRIPTION,
A.MS_ORG_NAME,
A.WR_ORG_NAME,
A.WS_ORG_NAME,
B.SUBMIT_DOC_DATE,
B.SUBMIT_USER_NAME,
B.SUBJECT_KEY,
B.CHECK_USER_NAME,
B.SN,
B.SECRET_LEV,
B.PROOF_USER_NAME,
B.SEND_DOC_USER_NAME,
A.TITLE,
A.CREATED_DATE
from
t_document A Left join t_document_append B on(A.DOC_ID=B.DOC_ID)
inner join t_organization C on(A.ORG_ID=C.ORG_ID)
where A.DOC_ID=?
org.hibernate.MappingException: No Dialect mapping for JDBC type: -1
at org.hibernate.dialect.TypeNames.get(TypeNames.java:56)
at org.hibernate.dialect.TypeNames.get(TypeNames.java:81)
at org.hibernate.dialect.Dialect.getHibernateTypeName(Dialect.java:370)
at org.hibernate.loader.custom.CustomLoader$Metadata.getHibernateType(CustomLoader.java:559)
at org.hibernate.loader.custom.CustomLoader$ScalarResultColumnProcessor.performDiscovery(CustomLoader.java:485)
at org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:501)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1796)
at org.hibernate.loader.Loader.doQuery(Loader.java:674)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289)
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695)
at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:152)
at com.lfpost.daoimpl.QueryDAO.getDocInfo(QueryDAO.java:113)
at com.lfpost.daoimpl.QueryDAOTest.testgetDocInfo(QueryDAOTest.java:86)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
查证了一番:A.DESCRIPTION 是Text类型。
估计要重写方言了:
package com.db.dialect;
import java.sql.Types;
import org.hibernate.Hibernate;
import org.hibernate.dialect.MySQLDialect;
public class CpoaMySqlDialect extends MySQLDialect{
public CpoaMySqlDialect() {
super();
registerHibernateType(Types.LONGVARCHAR,Hibernate.TEXT.getName());
}
}
更改 hibernate.cfg.xml
<property name="dialect">
com.db.dialect.CpoaMySqlDialect
</property>
执行程序:
public List getDocInfo(ParamsContext pcn) {
Query query=getSession().getNamedQuery("GetDocInfo");
query.setParameter("docId", pcn.getDocId());
return query.list();
}
这下O了!