Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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/7/sql-server/24.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从MS SQL检索值时出错_Java_Sql Server_Hibernate_Entity - Fatal编程技术网

Java 使用Hibernate从MS SQL检索值时出错

Java 使用Hibernate从MS SQL检索值时出错,java,sql-server,hibernate,entity,Java,Sql Server,Hibernate,Entity,我已经完成了一个程序,在这个程序中,我必须从MS SQL中的表中检索数据。我使用的是Hibernate,其中AbtDebtbyCAN是一个实体类。到目前为止,连接还不错,但我面临的唯一问题是使用注释映射从MS SQL打印数据债务是要映射的表的名称(表的名称以小写字母表示)。下面是我想用Hibernate打印出来的结果。有谁能帮助我实现数据的获取吗 债务 id can bdrl_debt excess_ta_debt posting_ref

我已经完成了一个程序,在这个程序中,我必须从MS SQL中的表中检索数据。我使用的是
Hibernate
,其中
AbtDebtbyCAN
是一个
实体
类。到目前为止,连接还不错,但我面临的唯一问题是使用注释映射从MS SQL打印数据<代码>债务是要映射的表的名称(表的名称以小写字母表示)。下面是我想用
Hibernate
打印出来的结果。有谁能帮助我实现数据的获取吗

债务

  id          can           bdrl_debt    excess_ta_debt      posting_ref   debt_settlement_id   debt_settlement_at       debt_business_date
  
11425   1099112400000003        0              200             501728             137        2020-10-13 10:51:50.000         2020-10-13 
public class AbtCANMapperTest {
    public static void main(String args[]) {

    StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build();
    Metadata meta = new MetadataSources(ssr).getMetadataBuilder().build();

    SessionFactory factory = meta.getSessionFactoryBuilder().build();




        Session session = factory.openSession();
        Transaction tx = null;

        try {
            tx = session.beginTransaction();
            List abtdebt = session.createQuery("FROM AbtDebtbbyCAN WHERE debt_can=1099112400000003").getResultList();
            for (Iterator iterator = abtdebt.iterator(); iterator.hasNext(); ) {
                AbtDebtbbyCAN abtcan = (AbtDebtbbyCAN) iterator.next();
                System.out.print("debt id: " + abtcan.getDebt_id());
                System.out.print("debt can: " + abtcan.getDebt_can());
                System.out.print("bdrl debt: " + abtcan.getBdrl_debt());
                System.out.print("excess debt: " + abtcan.getExcess_ta_debt());
                System.out.print("posting ref: " + abtcan.getPosting_ref());
                System.out.print("debt settlement id: " + abtcan.getDebt_settlement_id());
                System.out.print("debt settlement at: " + abtcan.getDebt_settlement_at());
                System.out.println("debt business date: " + abtcan.getDebt_business_date());
            }
            tx.commit();
        } catch (HibernateException e) {
            if (tx != null) tx.rollback();
            e.printStackTrace();
        } finally {
            session.close();
        }


}
}
AbtDebtbyCAN

@Data
@Entity
@Table(name = "debt")
public class AbtDebtbbyCAN implements Serializable{

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int debt_id;

@Column(name = "can")
private int debt_can;

@Column(name = "bdrl_debt")
private int bdrl_debt;

@Column(name = "excess_ta_debt")
private int excess_ta_debt;

@Column(name = "posting_ref")
private int posting_ref;

@Column(name = "debt_settlement_id")
private int debt_settlement_id;

@Column(name = "debt_settlement_at")
private DateTime debt_settlement_at;

@Column(name = "debt_business_date")
private Date debt_business_date;

}
abtcamappertest

  id          can           bdrl_debt    excess_ta_debt      posting_ref   debt_settlement_id   debt_settlement_at       debt_business_date
  
11425   1099112400000003        0              200             501728             137        2020-10-13 10:51:50.000         2020-10-13 
public class AbtCANMapperTest {
    public static void main(String args[]) {

    StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build();
    Metadata meta = new MetadataSources(ssr).getMetadataBuilder().build();

    SessionFactory factory = meta.getSessionFactoryBuilder().build();




        Session session = factory.openSession();
        Transaction tx = null;

        try {
            tx = session.beginTransaction();
            List abtdebt = session.createQuery("FROM AbtDebtbbyCAN WHERE debt_can=1099112400000003").getResultList();
            for (Iterator iterator = abtdebt.iterator(); iterator.hasNext(); ) {
                AbtDebtbbyCAN abtcan = (AbtDebtbbyCAN) iterator.next();
                System.out.print("debt id: " + abtcan.getDebt_id());
                System.out.print("debt can: " + abtcan.getDebt_can());
                System.out.print("bdrl debt: " + abtcan.getBdrl_debt());
                System.out.print("excess debt: " + abtcan.getExcess_ta_debt());
                System.out.print("posting ref: " + abtcan.getPosting_ref());
                System.out.print("debt settlement id: " + abtcan.getDebt_settlement_id());
                System.out.print("debt settlement at: " + abtcan.getDebt_settlement_at());
                System.out.println("debt business date: " + abtcan.getDebt_business_date());
            }
            tx.commit();
        } catch (HibernateException e) {
            if (tx != null) tx.rollback();
            e.printStackTrace();
        } finally {
            session.close();
        }


}
}
错误堆栈跟踪

Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.type.SerializationException: could not deserialize
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154)
    at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1542)
    at org.hibernate.query.Query.getResultList(Query.java:165)
    at AbtMainTestControl.AbtTestObj.AbtCANMapperTest.main(AbtCANMapperTest.java:36)
Caused by: org.hibernate.type.SerializationException: could not deserialize
    at org.hibernate.internal.util.SerializationHelper.doDeserialize(SerializationHelper.java:243)
    at org.hibernate.internal.util.SerializationHelper.deserialize(SerializationHelper.java:287)
    at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.fromBytes(SerializableTypeDescriptor.java:138)
    at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:113)
    at org.hibernate.type.descriptor.java.SerializableTypeDescriptor.wrap(SerializableTypeDescriptor.java:29)
    at org.hibernate.type.descriptor.sql.VarbinaryTypeDescriptor$2.doExtract(VarbinaryTypeDescriptor.java:60)
    at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:47)
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:257)
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253)
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:243)
    at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:329)
    at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:3088)
    at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1907)
    at org.hibernate.loader.Loader.hydrateEntityState(Loader.java:1835)
    at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1808)
    at org.hibernate.loader.Loader.getRow(Loader.java:1660)
    at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:745)
    at org.hibernate.loader.Loader.getRowsFromResultSet(Loader.java:1044)
    at org.hibernate.loader.Loader.processResultSet(Loader.java:995)
    at org.hibernate.loader.Loader.doQuery(Loader.java:964)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:350)
    at org.hibernate.loader.Loader.doList(Loader.java:2887)
    at org.hibernate.loader.Loader.doList(Loader.java:2869)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2701)
    at org.hibernate.loader.Loader.list(Loader.java:2696)
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:506)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:400)
    at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:219)
    at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1415)
    at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1565)
    at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1533)
    ... 2 more
Caused by: java.io.StreamCorruptedException: invalid stream header: 0000AC53
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:899)
    at java.io.ObjectInputStream.<init>(ObjectInputStream.java:357)
    at org.hibernate.internal.util.SerializationHelper$CustomObjectInputStream.<init>(SerializationHelper.java:309)
    at org.hibernate.internal.util.SerializationHelper$CustomObjectInputStream.<init>(SerializationHelper.java:299)
    at org.hibernate.internal.util.SerializationHelper.doDeserialize(SerializationHelper.java:218)
    ... 32 more
Caused by: org.hibernate.type.SerializationException: could not deserialize


> Task :AbtCANMapperTest.main() FAILED

Caused by: java.io.StreamCorruptedException: invalid stream header: 0000AC53

Execution failed for task ':AbtCANMapperTest.main()'.
> Process 'command 'C:/Program Files/Java/jdk1.8.0_241/bin/java.exe'' finished with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
线程“main”javax.persistence.PersistenceException:org.hibernate.type.SerializationException:无法反序列化 位于org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154) 位于org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1542) 位于org.hibernate.query.query.getResultList(query.java:165) 在AbtMainTestControl.AbtTestObj.AbtCANMapperTest.main(AbtCANMapperTest.java:36) 原因:org.hibernate.type.SerializationException:无法反序列化 位于org.hibernate.internal.util.SerializationHelper.doDeserialize(SerializationHelper.java:243) 位于org.hibernate.internal.util.SerializationHelper.deserialize(SerializationHelper.java:287) 位于org.hibernate.type.descriptor.java.SerializableTypeScriptor.fromBytes(SerializableTypeScriptor.java:138) 位于org.hibernate.type.descriptor.java.SerializableTypeScriptor.wrap(SerializableTypeScriptor.java:113) 位于org.hibernate.type.descriptor.java.SerializableTypeScriptor.wrap(SerializableTypeScriptor.java:29) 位于org.hibernate.type.descriptor.sql.VarbinaryTypeDescriptor$2.doExtract(VarbinaryTypeDescriptor.java:60) 位于org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:47) 位于org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:257) 位于org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253) 位于org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:243) 位于org.hibernate.type.AbstractStandardBasicType.hydroge(AbstractStandardBasicType.java:329) 位于org.hibernate.persister.entity.AbstractEntityPersister.hydroge(AbstractEntityPersister.java:3088) 位于org.hibernate.loader.loader.loadFromResultSet(loader.java:1907) 位于org.hibernate.loader.loader.hydrateEntityState(loader.java:1835) 位于org.hibernate.loader.loader.instanceNotYetLoaded(loader.java:1808) 位于org.hibernate.loader.loader.getRow(loader.java:1660) 位于org.hibernate.loader.loader.getRowFromResultSet(loader.java:745) 位于org.hibernate.loader.loader.getRowsFromResultSet(loader.java:1044) 位于org.hibernate.loader.loader.processResultSet(loader.java:995) 位于org.hibernate.loader.loader.doQuery(loader.java:964) 在org.hibernate.loader.loader.doQueryAndInitializeNonLazyCollections(loader.java:350)上 位于org.hibernate.loader.loader.doList(loader.java:2887) 位于org.hibernate.loader.loader.doList(loader.java:2869) 位于org.hibernate.loader.loader.listIgnoreQueryCache(loader.java:2701) 位于org.hibernate.loader.loader.list(loader.java:2696) 位于org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:506) 位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:400) 位于org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:219) 位于org.hibernate.internal.SessionImpl.list(SessionImpl.java:1415) 位于org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1565) 位于org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1533) ... 还有两个 原因:java.io.StreamCorruptedException:无效的流头:0000AC53 位于java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:899) 位于java.io.ObjectInputStream。(ObjectInputStream.java:357) 位于org.hibernate.internal.util.SerializationHelper$CustomObjectInputStream。(SerializationHelper.java:309) 位于org.hibernate.internal.util.SerializationHelper$CustomObjectInputStream。(SerializationHelper.java:299) 位于org.hibernate.internal.util.SerializationHelper.doDeserialize(SerializationHelper.java:218) ... 32多 原因:org.hibernate.type.SerializationException:无法反序列化 >任务:AbtCANMapperTest.main()失败 原因:java.io.StreamCorruptedException:无效的流头:0000AC53 任务“:AbtCANMapperTest.main()”的执行失败。 >进程“command”C:/Program Files/Java/jdk1.8.0_241/bin/Java.exe“”以非零退出值1结束 *尝试: 使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。使用--scan运行以获得完整的洞察力。
不确定您在这里使用的是什么类型,但至少
DateTime
不是Hibernate支持的标准类型。如果Hibernate不知道某个类型,它将尝试以blob/byte[]的序列化形式刷新该值。如果您使用
java.sql.Timestamp
java.util.Calendar
或Hibernate开箱即用支持的任何其他类型,这应该可以正常工作。

有人能告诉我问题出在哪里吗?我迫切需要一个答案,16位的
can
值是否会反序列化为Java
int
?也许你需要一个
长的
。似乎Hibernate映射只有在所有变量都具有与MS SQL表中的对象互补的数据类型时才起作用?我的思路对吗?@我一直在学习,我还是会犯同样的错误。我该怎么解决?我已经设法解决了。我使用了
String
作为我所有的v