Hibernate 5.x 迁移 Criteria 到 CriteriaBuilder

我有一个在旧 .hbm.xml 文件中建模的表。

检索行的遗留代码使用 org.hibernate.Criteria 来获取 uniqueResult()。在迁移到 Hibernate 5.x 时,Criteria 已被弃用,因此我尝试使用 CriteriaBuilder 来实现相同的目的。但是,当我尝试基于之前有效的内容 (Hib 4.x) 添加限制 (Hib 5.x) 时,我收到 IllegalArgumentException:

java.lang.IllegalArgumentException: Unable to locate Attribute  with the the given name [xyzKey.plantName] on this ManagedType [com.foo.bar.Plant]
at org.hibernate.metamodel.model.domain.internal.AbstractManagedType.checkNotNull(AbstractManagedType.java:147)
at org.hibernate.metamodel.model.domain.internal.AbstractManagedType.getAttribute(AbstractManagedType.java:118)
at org.hibernate.metamodel.model.domain.internal.AbstractManagedType.getAttribute(AbstractManagedType.java:43)
at org.hibernate.query.criteria.internal.path.AbstractFromImpl.locateAttributeInternal(AbstractFromImpl.java:111)
at org.hibernate.query.criteria.internal.path.AbstractPathImpl.locateAttribute(AbstractPathImpl.java:204)
at org.hibernate.query.criteria.internal.path.AbstractPathImpl.get(AbstractPathImpl.java:177)

植物.hbm.xml:

<hibernate-mapping>

    <class lazy="false" name="com.foo.bar.Plant" table="Plant">

        <meta inherit="false" attribute="extends">com.foo.bar.PlantBase</meta>


        <id name="id" type="integer" column="plantID" unsaved-value="null">

            <meta inherit="false" attribute="scope-set">protected</meta>

            <generator class="native" />

        </id>


        <component name="xyzKey" class="com.foo.bar.PlantKey">

            <meta inherit="false" attribute="use-in-tostring">true</meta>

            <property name="plantName" type="string" index="xyzKeyndx" unique-key="plantKey">

                <column name="plantName" />

    </class>

</hibernate-mapping>


MM们
浏览 68回答 1
1回答

LEATH

你试过了吗criteriaBuilder.equal(root.get("xyzKey").get("plantName"),&nbsp;xyzKey.getPlantName())
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java