gpt4 book ai didi

java - 我如何使用这个 hibernate 查询获取行?

转载 作者:行者123 更新时间:2023-12-01 14:55:45 26 4
gpt4 key购买 nike

我正在使用 hibernate 从表中获取行。

List<Work> W= sessionFactory.getCurrentSession().createSQLQuery("Select * from T_WORK ").addEntity(Work.class).list();

这个查询工作正常。

但是下面的查询无法正常工作。

List<Work> W= sessionFactory.getCurrentSession().createSQLQuery("Select * from T_WORK WHERE STATUS = 5 ").addEntity(Work.class).list();

我收到错误为 .

could not execute query

Caused by: java.sql.SQLException: Invalid column name
at oracle.jdbc.driver.OracleStatement.getColumnIndex(OracleStatement.java:3711)
at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl.java:2763)
at oracle.jdbc.driver.OracleResultSet.getTimestamp(OracleResultSet.java:512)
at org.apache.commons.dbcp.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:300)
at org.apache.commons.dbcp.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:300)
at org.hibernate.type.descriptor.sql.TimestampTypeDescriptor$2.doExtract(TimestampTypeDescriptor.java:62)
at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:64)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:254)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:250)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:230)
at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:331)
at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2283)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1527)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1455)
at org.hibernate.loader.Loader.getRow(Loader.java:1355)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:611)
at org.hibernate.loader.Loader.doQuery(Loader.java:829)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
at org.hibernate.loader.Loader.doList(Loader.java:2542)

我正在使用 Oracle,状态列的数据类型为数字。

在工作项类中

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "STATUS_CODE", nullable = false)
private Status status;

我哪里错了?提前致谢。

我怎样才能实现这个目标?

最佳答案

您正在使用 native SQL 查询。这意味着,您应该使用字段的 SQL 名称。因此,请使用 STATUS_CODE 而不是 STATUS

...createSQLQuery("从 T_WORK WHERE STATUS_CODE = 5 选择*")...

关于java - 我如何使用这个 hibernate 查询获取行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14319582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com