Hibernate Criteria 取消关联
Hibernate Criteria taking off associations
我有一个 class Usuario。用户与 UsuarioPerfil 有关联:
public class Usuario{
/*Attributes*/
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "id_usuario_perfil", referencedColumnName = "id", foreignKey = @ForeignKey(name = "fk_usuario_id_usuario_perfil"))
@Getter
@Setter
private UsuarioPerfil usuarioPerfil;
}
public class UsuarioPerfil{
/*Attributes*/
}
我正在使用条件执行查询,如下所示:
Session sessao = this.getEntityManager().unwrap(Session.class);
sessao.createCriteria(Usuario.class).list();
但是,在某些情况下,愿望清单不会出现在数据 UsuarioPerfil 实体中,只有用户。我如何使用 Hibernate Criteria 完成此操作?
注意:我知道这可以使用 Hibernate 或 JPA Query
我不相信您可以使用 Hibernate Criteria API 明确地执行您要求的操作,因为建立关联 LAZY
并将它们设置为 EAGER
是普遍接受的做法视具体情况而定。
因此,将映射更改为使用 fetch = FetchType.LAZY
,然后在查询中需要关联的情况下,将其指定为:
criteria.setFetchMode("usuarioPerfil", FetchMode.JOIN);
如果您有权访问 JPA 的 EntityGraph
注释,我强烈建议您也查看这些注释。至少,您至少可以看看 Hibernate 的 FetchProfile
概念,因为这些概念沿用了通过名称定义获取策略的方式,这有助于使代码和查询更清晰。
我有一个 class Usuario。用户与 UsuarioPerfil 有关联:
public class Usuario{
/*Attributes*/
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "id_usuario_perfil", referencedColumnName = "id", foreignKey = @ForeignKey(name = "fk_usuario_id_usuario_perfil"))
@Getter
@Setter
private UsuarioPerfil usuarioPerfil;
}
public class UsuarioPerfil{
/*Attributes*/
}
我正在使用条件执行查询,如下所示:
Session sessao = this.getEntityManager().unwrap(Session.class);
sessao.createCriteria(Usuario.class).list();
但是,在某些情况下,愿望清单不会出现在数据 UsuarioPerfil 实体中,只有用户。我如何使用 Hibernate Criteria 完成此操作?
注意:我知道这可以使用 Hibernate 或 JPA Query
我不相信您可以使用 Hibernate Criteria API 明确地执行您要求的操作,因为建立关联 LAZY
并将它们设置为 EAGER
是普遍接受的做法视具体情况而定。
因此,将映射更改为使用 fetch = FetchType.LAZY
,然后在查询中需要关联的情况下,将其指定为:
criteria.setFetchMode("usuarioPerfil", FetchMode.JOIN);
如果您有权访问 JPA 的 EntityGraph
注释,我强烈建议您也查看这些注释。至少,您至少可以看看 Hibernate 的 FetchProfile
概念,因为这些概念沿用了通过名称定义获取策略的方式,这有助于使代码和查询更清晰。