我收到此错误,我试图在休眠中使用一对多关系访问子属性:
org.hibernate.QueryException:非法尝试取消引用集合 [sigtccontr0_.ID_OBJETIVO.children] 与元素属性引用 [idIniciativa] [来自 org.citi.tablero.contraloria.planes.model.db.hibernate.dto.SigTcContraloriaObjetivos p where p。 children.idIniciativa = 1]
这是我的查询:
String sql = "from SigTcContraloriaObjetivos p where p.children.idIniciativa = 1";
Dto的:
public class SigTcContraloriaObjetivos {
private Long idObjetivo;
private String descripcion;
private Set<SigTcContraloriaIniciativas> children;
public class SigTcContraloriaIniciativas {
private Long idIniciativa;
private String descripcion;
private Long idObjetivo;
映射:
<class dynamic-insert="false" dynamic-update="true" mutable="true"
name="org.citi.tablero.contraloria.planes.model.db.hibernate.dto.SigTcContraloriaObjetivos"
optimistic-lock="version" polymorphism="implicit" select-before-update="false"
table="SIG_TC_CONTRALORIA_OBJETIVOS">
<id column="ID_OBJETIVO" name="idObjetivo">
<generator class="sequence">
<param name="sequence">SEQ_SIG_CONTRALORIA_OBJETIVOS</param>
</generator>
</id>
<property column="DESCRIPCION" name="descripcion"/>
<set name="children" inverse="false" cascade="all" lazy="false">
<key column="ID_OBJETIVO"/>
<one-to-many class="SigTcContraloriaIniciativas"/>
</set>
</class>
<class dynamic-insert="false" dynamic-update="true" mutable="true" name="org.citi.tablero.contraloria.planes.model.db.hibernate.dto.SigTcContraloriaIniciativas"
optimistic-lock="version" polymorphism="implicit" select-before-update="false" table="SIG_TC_CONTRALORIA_INICIATIVAS">
<id column="ID_INICIATIVA" name="idIniciativa">
<generator class="sequence">
<param name="sequence">SEQ_SIG_CONTRALORIA_INICIATIVA</param>
</generator>
</id>
<property column="DESCRIPCION" name="descripcion"/>
<property column="ID_OBJETIVO" name="idObjetivo" />
</class>
知道如何访问idIniciativa
吗?
更新:使用提供的查询时:“select p from SigTcContraloriaObjetivos p join p.children c where c.idIniciativa = 1”
query.list() 返回:
对象1:
- SigTcContraloriaObjetivos 1.1 SigTcContraloriaIniciativas(儿童)
- SigTcContraloriaIniciativas
对象2:
- SigTcContraloriaObjetivos 1.1 SigTcContraloriaIniciativas(儿童)
- SigTcContraloriaIniciativas
我需要:
- 对象 1:SigTcContraloriaObjetivos -> SigTcContraloriaIniciativas(儿童)
- 对象 2:SigTcContraloriaObjetivos -> SigTcContraloriaIniciativas(儿童)