hibernate hsql得到错误节点没有数据类型:org.hibernate.hql.ast.tree.IdentNode

Posted

技术标签:

【中文标题】hibernate hsql得到错误节点没有数据类型:org.hibernate.hql.ast.tree.IdentNode【英文标题】:hibernate hsql getting error No data type for node: org.hibernate.hql.ast.tree.IdentNode 【发布时间】:2013-08-13 17:39:07 【问题描述】:

我的 hsql 出现错误

No data type for node: org.hibernate.hql.ast.tree.IdentNode 
 +-[IDENT] IdentNode: 'OrderLocation' originalText=OrderLocation

我的映射类是这样的

<class name="core.classes.lab.LabOrder" table="lab_order">

        <id name="Order_ID" type="int" column="labOrder_ID">
            <generator class="increment" /> 
        </id>

        <many-to-one name="TestID" class="core.classes.lab.TestDescription"
            fetch="join">
            <column name="TestID" not-null="true" />
        </many-to-one>

        <property name="OrderLocation" column="labOrder_Location"
            type="string" />
        <property name="OrderStatus" column="labOrder_Status" type="string" />
        <property name="DueDate" column="labOrder_DueDate" type="java.util.Date" />
        <property name="OrderPriority" column="labOrder_Priority"
            type="int" />
        <property name="OrderRemarks" column="labOrder_Remarks" type="string" />

        <property name="OrderCreateDate" column="labOrder_CreateDate"
            type="java.util.Date" />
        <property name="OrderCreateUser" column="labOrder_CreateUser"
            type="int" />
        <property name="OrderLastUpdate" column="labOrder_LastUpdate"
            type="java.util.Date" />
        <property name="OrderLastUpdateUser" column="labOrder_LastUpdateUser"
            type="int" />
    </class>

和我这样的hsql查询

Select e from LabOrder as e,TestDescription as t where e.TestID =t.TestID and t.isSpecimenAvailable = true

谁能告诉我为什么会出现这样的错误,请帮助我,谢谢

【问题讨论】:

【参考方案1】:

eSelect e from .... 中做什么? 尝试将其更改为 e.OrderLocation*

查看this link 获取示例。

【讨论】:

感谢我可以通过删除 select 来修复它,但是现在我得到了所有的对象,现在有办法删除第二个对象 你能告诉我第二个对象是什么吗?这是一个 -OrderStatus 吗? 现在我正在使用这样的查询“来自 LabOrder 作为 e,TestDescription 作为 t 其中 e.TestID = t.TestID 和 t.isSpecimenAvailable = true”,我正在获取所有行详细信息TestDescription 表,但我不需要它 您需要哪些字段?如果您愿意,您可以像这样提供特定字段 - select e.OrderLocation, t.TestID ...。谢谢! 我得到这些值并将它们转换为 json,因为这是一个 Web 服务,所以当指定列名时,我没有将列名作为标签,所以我需要获取列名以及价值。但是当我指定列时,它没有给我列名但是当我使用上面的评论查询时,我得到了列名,所以我该怎么办【参考方案2】:

我花了一些时间调试的一个问题是一个在 Hibernate 3.x 上运行良好的查询,如下所示:

SELECT a FROM Actor A

当我升级到 Hibernate 4.x 时,我收到了与上述类似的错误消息。问题出乎意料地是大写字母A。

【讨论】:

【参考方案3】:

确保查询正确编写,例如,

select user from User user;

语法:

SELECT <alias_name> FROM <EntityClass> <alias_name>;

【讨论】:

以上是关于hibernate hsql得到错误节点没有数据类型:org.hibernate.hql.ast.tree.IdentNode的主要内容,如果未能解决你的问题,请参考以下文章

使用hsql hibernate数据源隔离Junit测试

HSQL 和 Hibernate - 许多删除语句上的内存不足错误

使用 hsql hibernate 数据源隔离 Junit 测试

org.hibernate.HibernateException:没有使用 HSQL DB 配置 CurrentSessionContext

HSQL数据库存储格式

在 LightAdmin (Spring/JPA/Hibernate) 中使 HSQL 数据库持久化