Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将hibernate 3更新为hibernate 5后的SQLQuery列表强制转换异常_Java_Hibernate - Fatal编程技术网

Java 将hibernate 3更新为hibernate 5后的SQLQuery列表强制转换异常

Java 将hibernate 3更新为hibernate 5后的SQLQuery列表强制转换异常,java,hibernate,Java,Hibernate,将hibernate 3更新为hibernate 5后发生SQLQuery列表强制转换异常。这是我的密码 public List<List<String>> getReportQuery(String query) { Session sess = getSessionFactory().getCurrentSession(); final List<List<String>> table = new ArrayList<L

将hibernate 3更新为hibernate 5后发生SQLQuery列表强制转换异常。这是我的密码

public List<List<String>> getReportQuery(String query) {

    Session sess = getSessionFactory().getCurrentSession();
    final List<List<String>> table = new ArrayList<List<String>>();

    sess.beginTransaction();

    SQLQuery it = sess.createSQLQuery(query);

    table.add(it.list());
    return table;
}

我通过添加
it.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE)解决了这个问题到我的查询实例。
这将结果集转换为映射

工作守则

public List<List<String>> getReportQuery(String query) {

        Session sess = getSessionFactory().getCurrentSession();
        final List<List<String>> table = new ArrayList<List<String>>();
        sess.beginTransaction();

        SQLQuery it = sess.createSQLQuery(query);
        it.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
        List<Map<String,Object>> result = it.list();

        for(Map<String,Object> k : result){
            final List<String> tmp = new ArrayList<String>();

            for(Entry<String,Object> entry : k.entrySet())
                tmp.add(entry.getValue() != null ? entry.getValue().toString() : null);

            table.add(tmp);
        }
}
公共列表getReportQuery(字符串查询){ 会话sess=getSessionFactory().getCurrentSession(); 最终列表表=新的ArrayList(); sess.beginTransaction(); SQLQuery it=sess.createSQLQuery(查询); it.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE); List result=it.List(); 用于(映射k:结果){ 最终列表tmp=newarraylist(); for(条目:k.entrySet()) tmp.add(entry.getValue()!=null?entry.getValue().toString():null); 表2.3(tmp); } }
这可能是由于使用了“createSQLQuery()”方法,该方法现在已从hibernate 5.2中弃用。检查

当我们从hibernate 5.0升级到hibernate 5.2时,我遇到了类似的异常,请参阅下面的堆栈跟踪以了解更多详细信息。我的测试用例在出现这些异常时停止工作。一旦我用最新的方法替换了不推荐的方法,它又开始工作了

java.lang.ClassCastException: java.util.GregorianCalendar cannot be cast to java.util.Date
at org.hibernate.type.descriptor.java.JdbcTimestampTypeDescriptor.unwrap(JdbcTimestampTypeDescriptor.java:24) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.type.descriptor.sql.TimestampTypeDescriptor$1.doBind(TimestampTypeDescriptor.java:48) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:74) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:280) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:275) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.engine.query.spi.NativeSQLQueryPlan.bindNamedParameters(NativeSQLQueryPlan.java:137) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.engine.query.spi.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:200) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.internal.SessionImpl.executeNativeUpdate(SessionImpl.java:1575) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.query.internal.NativeQueryImpl.doExecuteUpdate(NativeQueryImpl.java:274) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.query.internal.AbstractProducedQuery.executeUpdate(AbstractProducedQuery.java:1504) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
public List<List<String>> getReportQuery(String query) {

        Session sess = getSessionFactory().getCurrentSession();
        final List<List<String>> table = new ArrayList<List<String>>();
        sess.beginTransaction();

        SQLQuery it = sess.createSQLQuery(query);
        it.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
        List<Map<String,Object>> result = it.list();

        for(Map<String,Object> k : result){
            final List<String> tmp = new ArrayList<String>();

            for(Entry<String,Object> entry : k.entrySet())
                tmp.add(entry.getValue() != null ? entry.getValue().toString() : null);

            table.add(tmp);
        }
}
java.lang.ClassCastException: java.util.GregorianCalendar cannot be cast to java.util.Date
at org.hibernate.type.descriptor.java.JdbcTimestampTypeDescriptor.unwrap(JdbcTimestampTypeDescriptor.java:24) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.type.descriptor.sql.TimestampTypeDescriptor$1.doBind(TimestampTypeDescriptor.java:48) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:74) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:280) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:275) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.engine.query.spi.NativeSQLQueryPlan.bindNamedParameters(NativeSQLQueryPlan.java:137) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.engine.query.spi.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:200) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.internal.SessionImpl.executeNativeUpdate(SessionImpl.java:1575) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.query.internal.NativeQueryImpl.doExecuteUpdate(NativeQueryImpl.java:274) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]
at org.hibernate.query.internal.AbstractProducedQuery.executeUpdate(AbstractProducedQuery.java:1504) ~[hibernate-core-5.2.17.Final.jar:5.2.17.Final]