SQL Server 2000 seems to have an issue with the order columns are read from the result set if there are any blob/clob datatypes used.
http://support.microsoft.com/default.aspx?kbid=824106
Does anyone know in which order hibernate does the read? Also, is there something configuration-wise that I need to do to tell it in what order to read? Is there a configuration work around, or will I simply have to test for the Class type in my java code? Maybe a newer version has a fix?
Thanks,
Derrick
CREATE TABLE [dbo].[emailTemplate] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[name] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[description] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[fromAddress] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[toAddresses] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[cc] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[bcc] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[subject] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[body] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[calendarAppointment] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[enabled] [bit] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[emailMessage] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[name] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[description] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[fromAddress] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[toAddresses] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[cc] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[bcc] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[subject] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[body] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[calendarAppointment] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]
GO
Hibernate version:
2.1.3
Mapping documents:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping package="com.skillsoft.mgs.email">
<class mutable="false" name="EmailTemplateBean" table="emailTemplate">
<id name="ID" column="ID" unsaved-value="0">
<generator class="native"/>
</id>
<property name="name" column="name"/>
<property name="descr" column="description"/>
<property name="from" column="fromAddress"/>
<property name="to" column="toAddresses"/>
<property name="cc" column="cc"/>
<property name="bcc" column="bcc"/>
<property name="subject" column="subject"/>
<property name="body" column="body"/>
<property name="calendarAppointment" column="calendarAppointment"/>
<property name="enabled" column="enabled"/>
<joined-subclass name="com.skillsoft.mgs.email.queued.EmailMessage" table="emailMessage">
<key column="ID"/>
<property name="ID" column="ID" insert="false" update="false"/>
<property name="name" column="name"/>
<property name="descr" column="description"/>
<property name="from" column="fromAddress"/>
<property name="to" column="toAddresses"/>
<property name="cc" column="cc"/>
<property name="bcc" column="bcc"/>
<property name="subject" column="subject"/>
<property name="body" column="body"/>
<property name="calendarAppointment" column="calendarAppointment"/>
</joined-subclass>
</class>
</hibernate-mapping>
Code between sessionFactory.openSession() and session.close():
Full stack trace of any exception that occurs:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]ResultSet can not re-read row data
for column 3.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.validateColumnIndex(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.getString(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.getString(Unknown Source)
at org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:216)
at net.sf.hibernate.type.StringType.get(StringType.java:18)
at net.sf.hibernate.type.NullableType.nullSafeGet(NullableType.java:62)
at net.sf.hibernate.type.NullableType.nullSafeGet(NullableType.java:53)
at net.sf.hibernate.type.AbstractType.hydrate(AbstractType.java:66)
at net.sf.hibernate.loader.Loader.hydrate(Loader.java:611)
at net.sf.hibernate.loader.Loader.loadFromResultSet(Loader.java:552)
at net.sf.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:511)
at net.sf.hibernate.loader.Loader.getRow(Loader.java:426)
at net.sf.hibernate.loader.Loader.doQuery(Loader.java:209)
at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:133)
at net.sf.hibernate.loader.Loader.doList(Loader.java:955)
at net.sf.hibernate.loader.Loader.list(Loader.java:946)
at net.sf.hibernate.loader.CriteriaLoader.list(CriteriaLoader.java:121)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:3604)
at net.sf.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:238)
at com.skillsoft.lms.dao.hibernate.HibernateBaseDao.list(HibernateBaseDao.java:897)
at com.skillsoft.lms.dao.hibernate.HibernateBaseDao.findAll(HibernateBaseDao.java:702)
at com.skillsoft.lms.dao.hibernate.HibernateBaseDao.findAll(HibernateBaseDao.java:676)
at com.skillsoft.ilt.mail.ILTEmailFactory.getTemplateFromDB(ILTEmailFactory.java:38)
at com.skillsoft.mgs.email.EmailFactory.getTemplate(EmailFactory.java:225)
at com.skillsoft.mgs.email.EmailFactory.getTemplate(EmailFactory.java:214)
at com.skillsoft.mgs.email.EmailFactory.getPreparedTemplate(EmailFactory.java:112)
at com.skillsoft.ilt.rules.actions.EmailAction.execute(EmailAction.java:68)
at com.skillsoft.mgs.rules.admin.CompositeAction.execute(CompositeAction.java:38)
at com.skillsoft.mgs.rules.admin.SimpleRule.apply(SimpleRule.java:81)
at com.skillsoft.mgs.rules.StatefulRuleSession.executeRules(StatefulRuleSession.java:146)
at com.skillsoft.lms.dao.hibernate.HibernateBaseDao.statefulRuleExecution(HibernateBaseDao.j
ava:213)
at com.skillsoft.lms.dao.hibernate.HibernateBaseDao.preSave(HibernateBaseDao.java:129)
at com.skillsoft.lms.dao.hibernate.HibernateBaseDao.save(HibernateBaseDao.java:470)
at com.skillsoft.lms.dao.hibernate.HibernateBaseDao.save(HibernateBaseDao.java:439)
at com.skillsoft.ilt.actions.SessionAction.performSave(SessionAction.java:276)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at com.skillsoft.ilt.actions.BaseAction.dispatchAction(BaseAction.java:702)
at com.skillsoft.ilt.actions.BaseAction.performAction(BaseAction.java:465)
at com.skillsoft.ilt.actions.BaseAction.execute(BaseAction.java:345)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at com.skillsoft.ilt.servlet.NDCContextFilter.doFilter(NDCContextFilter.java:62)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at com.skillsoft.ilt.servlet.HitCountFilter.doFilter(HitCountFilter.java:86)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:19
8)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.RequestDumperValve.invoke(RequestDumperValve.java:169)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:296)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:372)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:694)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:626)
at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:807)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644)
at java.lang.Thread.run(Thread.java:534)
Name and version of the database you are using:
SQL Server 2000
The generated SQL (show_sql=true):
Debug level Hibernate log excerpt: