为了账号安全,请及时绑定邮箱和手机立即绑定

Hibernate 5.x 迁移 Criteria 到 CriteriaBuilder

Hibernate 5.x 迁移 Criteria 到 CriteriaBuilder

MM们 2023-09-20 16:33:10
我有一个在旧 .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>
查看完整描述

1 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

你试过了吗

criteriaBuilder.equal(root.get("xyzKey").get("plantName"), xyzKey.getPlantName())


查看完整回答
反对 回复 2023-09-20
  • 1 回答
  • 0 关注
  • 67 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信