Hibernate命名查询不知道错误

时间:2015-12-02 09:56:17

标签: java spring hibernate

我不知道为什么,但是当我将这个项目导入Eclipse时。这很好用。

所以,我认为这是导入到InteliJ IDEA时eclipse项目的问题

这种想象并不容易。

我有用于映射hibernate的类Setting和Setting.hbm.xml。 在这堂课中:

<hibernate-mapping>
<class name="Setting" table="setting" lazy="false">
    <id name="id" column="id" type="integer">
        <generator class="increment" />
    </id>

    .....
</class>

<query name="select.setting">
    from Setting as s where s.id = ? order by s.name
</query>

现在,当我调用函数

this.getHibernateTemplate().findByNamedQuery("select.setting", params);

此返回错误

org.springframework.orm.hibernate4.HibernateSystemException: Named query not known: select.setting; nested exception is org.hibernate.MappingException: Named query not known: select.setting
at org.springframework.orm.hibernate4.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:218) ~[spring-orm-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.orm.hibernate4.HibernateTemplate.doExecute(HibernateTemplate.java:343) ~[spring-orm-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.orm.hibernate4.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:308) ~[spring-orm-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.orm.hibernate4.HibernateTemplate.findByNamedQuery(HibernateTemplate.java:933) ~[spring-orm-4.1.6.RELEASE.jar:4.1.6.RELEASE]

请提供建议。

2 个答案:

答案 0 :(得分:1)

你可以尝试一下。

<query name="select.setting">
    <![CDATA[from Setting as s where s.id = ? order by s.name]]>
</query>

答案 1 :(得分:0)

XML解析器对您没有使用CDATA标记感到困惑。 CDATA是告诉框架其数据不应被解释为标记的方式。

因此,如@Lovababu所述,请在CDATA标记内包含查询:

<query name="select.setting">
<![CDATA[from Setting as s where s.id = ? order by s.name]]>