Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 非映射属性的休眠条件_Java_Hibernate_Orm_Criteria Api - Fatal编程技术网

Java 非映射属性的休眠条件

Java 非映射属性的休眠条件,java,hibernate,orm,criteria-api,Java,Hibernate,Orm,Criteria Api,我有一个树状对象,由Hibernate管理。对象有一个子对象列表,每个子对象在父对象中都有自己的自定义顺序: <hibernate-mapping> <class name="MyClass" .../> <property .../> <property .../> <list name="children" cascade="save-update" inverse="false"> <key colu

我有一个树状对象,由Hibernate管理。对象有一个子对象列表,每个子对象在父对象中都有自己的
自定义顺序

<hibernate-mapping>
  <class name="MyClass" .../>
  <property .../>
  <property .../>
  <list name="children" cascade="save-update" inverse="false">
    <key column="parent_id"/>
    <index column="custom_order"/>
    <one-to-many class="MyClass"/>
  </list>
</hibernate-mapping>
因为没有这样的POJO属性

问题:有没有一种方法可以在不添加POJO getter/setter的情况下为这个场景使用CriteriaAPI


编辑:我不介意将相关的
custom\u-order
属性添加到
MyClass
中,但我认为在Hibernate中这是不可能的。

您不能在条件查询中包含unmapped属性。当您执行criteria.list()或criteria.uniqueResult()时,Hibernate将引发nu映射属性异常。

您可以在运行时将属性添加到Hibernate映射中,然后在
criteria
中使用它

可以将
custom\u order
属性映射到
MyClass
,而无需为此属性添加getter或setter。只需将
custom\u order
属性配置为按字段访问即可

另外,为了防止开发人员使用反射更改
custom\u-order
属性,通过将
insert
update
设置为
false
,将
custom\u-order
设置为只读:

<property name="customerOrder" column="custom_order" access="field" insert="false" update="false"/>

你介意解释一下我如何为这样一个列表索引定义一个属性吗?太棒了,正是我所需要的!
<property name="customerOrder" column="custom_order" access="field" insert="false" update="false"/>
addOrder(new NativeSQLOrder("custom_order" ,true))