将 nvarchar 值转换为 JDBC 数据类型 TIMESTAMP 时发生错误

需要从数据库中查询得出一个实体,报错“ERROR: 将 nvarchar 值转换为 JDBC 数据类型 TIMESTAMP 时发生错误。”

    public void getCustomer(){
        Customer cust = new Customer();
        Session session = getCurrentSession();
        Transaction tx = session.beginTransaction();
        cust = (Customer) session.createQuery("from Customer where CUSTOMER_PHONE = '13540253987'").uniqueResult();
        System.out.println(cust);
    }

```我用的是springMVC+hibernate+spring框架,sqlserver数据库。求大神指导

你把Customer这个class里的date改用string吧。后面如果实在要匹配成date类型就自己添加一个转换操作,不过估计还是会报错。所以你每次转之前看看这个string内容到底是什么

两种解决方案:一,修改java的变量类型由TIMESTAMP 改为String;二,修改数据库该字段的数据类型,将其由nvarchar 修改为datetime

```ERROR: 将 nvarchar 值转换为 JDBC 数据类型 TIMESTAMP 时发生错误。
org.hibernate.exception.GenericJDBCException: could not execute query
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109)
at org.hibernate.loader.Loader.doList(Loader.java:2614)
at org.hibernate.loader.Loader.doList(Loader.java:2594)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2423)
at org.hibernate.loader.Loader.list(Loader.java:2418)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:501)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:371)
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:220)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1268)
at org.hibernate.internal.QueryImpl.list(QueryImpl.java:87)
at org.hibernate.internal.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:955)
at com.balaiduo.tcm.dao.impl.CustomerDaoImpl.find(CustomerDaoImpl.java:42)
at com.balaiduo.tcm.service.impl.BuylogsServiceImpl.addLogs(BuylogsServiceImpl.java:66)
at com.balaiduo.tcm.controller.BuylogsController.addLogs(BuylogsController.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)

这就是报的错

将hibernate-mapping的映射xml中,将日期类型由java.util.Date修改为java.sql.Date。

把对象类型Date 转变为 String类型就好了 ! 或者修改数据库结构!