Hi,
I'm trying to persist a field "entertimestamp" that is of type java.sql.Timestamp to a column "enter_TS", a datetime datatype in sql server 2005. I get an exception :
java.lang.UnsupportedOperationException: cannot perform lookups on timestamps. I don't know if I can do the conversion with the primary key since enter_TS is a part of the key.
Hibernate version: 3.0
Mapping documents:
<hibernate-mapping package="com.test.pas.common">
<class
name="FluClinic"
table="FluClinic"
dynamic-insert="true"
dynamic-update="true"
>
<composite-id class="com.test.pas.common.keys.FluClinicPK" name="fluClinicPK">
<key-property
name="enteredBy"
type="com.test.pas.common.customtypes.TrimmedString"
column="EnteredBy"
/>
<key-property
column="Enter_TS"
name="enterTimeStamp"
type="timestamp"
/>
<key-property name="HRN"
type="com.test.pas.common.customtypes.TrimmedString">
<column name="HRN" sql-type="character(9)" not-null="true" />
</key-property>
</composite-id>
<property
name="enteredBy"
type="com.test.pas.common.customtypes.TrimmedString"
access="property"
column="EnteredBy"
insert="false"
update="false"
/>
<property
column="Enter_TS"
name="enterTimeStamp"
type="timestamp"
access="property"
insert="false"
update="false"
/>
<property
column="Uploaded_TS"
name="uploadedTimeStamp"
type="timestamp"
access="property"
insert="true"
update="true"
/>
<property
name="HRN"
type="com.test.pas.common.customtypes.TrimmedString"
access="property"
column="HRN"
insert="false"
update="false"
/>
Full stack trace of any exception that occurs:
12:13:55,110 WARN [RequestProcessor] Unhandled Exception thrown: class java.lang.UnsupportedOperationException
12:13:55,110 WARN [RequestProcessor] Unhandled Exception thrown: class java.lang.UnsupportedOperationException
12:13:55,120 ERROR [[action]] Servlet.service() for servlet action threw exception
java.lang.UnsupportedOperationException: cannot perform lookups on timestamps
at org.hibernate.type.TimestampType.getHashCode(TimestampType.java:98)
at org.hibernate.type.AbstractType.getHashCode(AbstractType.java:113)
at org.hibernate.type.ComponentType.getHashCode(ComponentType.java:199)
at org.hibernate.engine.EntityKey.getHashCode(EntityKey.java:65)
at org.hibernate.engine.EntityKey.<init>(EntityKey.java:38)
at org.hibernate.event.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:135)
at org.hibernate.event.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:106)
at org.hibernate.event.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:180)
at org.hibernate.event.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:31)
at org.hibernate.event.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:169)
at org.hibernate.event.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:25)
at org.hibernate.event.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:65)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:479)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:474)
at com.kaiser.pas.dao.FluClinicDAO.createFluClinic(FluClinicDAO.java:58)
at com.kaiser.pas.action.pocketpc.PocketPCFluAcceptionAction.doExecute(PocketPCFluAcceptionAction.java:106)
at com.kaiser.pas.facility.action.ValidationAction.execute(ValidationAction.java:68)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
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.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.kaiser.pas.dao.HibernateFilter.doFilter(HibernateFilter.java:34)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.kaiser.pas.facility.security.SecurityFilter.doFilter(SecurityFilter.java:73)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:159)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
at java.lang.Thread.run(Thread.java:595)
12:13:55,120 ERROR [[action]] Servlet.service() for servlet action threw exception
java.lang.UnsupportedOperationException: cannot perform lookups on timestamps
at org.hibernate.type.TimestampType.getHashCode(TimestampType.java:98)
at org.hibernate.type.AbstractType.getHashCode(AbstractType.java:113)
at org.hibernate.type.ComponentType.getHashCode(ComponentType.java:199)
at org.hibernate.engine.EntityKey.getHashCode(EntityKey.java:65)
at org.hibernate.engine.EntityKey.<init>(EntityKey.java:38)
at org.hibernate.event.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:135)
at org.hibernate.event.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:106)
Name and version of the database you are using: SQL SERVER2005
PrimaryKey class
public class FluClinicPK implements Serializable
{
private static final long serialVersionUID = 1L;
// private int hashValue = 0;
private String HRN;
private String enteredBy;
private Timestamp enterTimeStamp;
public FluClinicPK( )
{
// used for hibernate
}
public FluClinicPK( String enteredBy, Timestamp enterTimeStamp, String HRN )
{
this.enteredBy = enteredBy;
this.enterTimeStamp = enterTimeStamp;
this.HRN = HRN;
}
/**
* Implementation of the equals comparison on the basis of equality of the Id components.
*
*/
public boolean equals( Object o )
{
if ( this == o ) return true;
if ( o == null ) return false;
if ( !(o instanceof FluClinicPK) ) return false;
final FluClinicPK fluClinicPK = (FluClinicPK) o;
if ( !enteredBy.equals( fluClinicPK.getEnteredBy( ) ) ) return false;
if ( !enterTimeStamp.equals( fluClinicPK.getEnterTimeStamp( ) ) ) return false;
if ( !HRN.equals( fluClinicPK.getHRN( ) ) ) return false;
return true;
}
public int hashCode( )
{
return (getEnteredBy( ) + getEnterTimeStamp( )+ getHRN( )).hashCode( );
}
// other getters and setters.
}
Table description :
CREATE TABLE [dbo].[FluClinic](
[EnteredBy] [char](12) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[Enter_TS] [datetime] NOT NULL,
[Trans_Status] [char](1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[HRN] [char](9) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[EventDate] [datetime] NOT NULL,
[ActionCode] [char](12) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[GivenBy] [char](30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[GivenAt] [char](30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Imm_Fac_Dept] [char](8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Lot] [char](25) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Dose] [char](25) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Route] [char](25) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Site] [char](25) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[ExtractDate] [datetime] NULL,
[SRCSystem] [char](1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Uploaded_TS] [datetime] NULL,
PRIMARY KEY (EnteredBy, Enter_TS, HRN))
Please help me out with this.
Thanks,
Anand.
|