Java 如何告诉Hibernate标准跳过深层次的关系?
我有hibernate实体Java 如何告诉Hibernate标准跳过深层次的关系?,java,hibernate,hibernate-criteria,Java,Hibernate,Hibernate Criteria,我有hibernate实体GeUser此实体与Pick实体有很多关系,此实体与ALgo实体有一个关系,此实体与DbMatch实体有很多关系。我的目标是获取GeUser实体,但不包含picks.algo.matches。我想在我的web应用程序上使用GeUser对象,但对我来说,不需要关于algo匹配的数据,所以我想在从数据库加载之前跳过它 GeUser实体: ... @Entity public class GeUser { .... @ManyToMany private L
GeUser
此实体与Pick
实体有很多关系,此实体与ALgo
实体有一个关系,此实体与DbMatch
实体有很多关系。我的目标是获取GeUser实体,但不包含picks.algo.matches
。我想在我的web应用程序上使用GeUser对象,但对我来说,不需要关于algo匹配的数据,所以我想在从数据库加载之前跳过它
GeUser实体:
...
@Entity
public class GeUser {
....
@ManyToMany
private List<Pick> picks = new ArrayList<Pick>(0);
...
Algo实体:
...
@Entity
public class Algo{
...
// I want to skip this when GeUser entity is loading from db. Should be e.g. matches == null
@ManyToMany
protected List<DbMatch> matches = new ArrayList<DbMatch>();
...
。。。
@实体
公共类算法{
...
//当GeUser实体从db加载时,我想跳过这个步骤。应该是例如matches==null
@许多
受保护列表匹配项=新建ArrayList();
...
GeUser dao方法:
public GeUser getUser(int user_id) {
Criteria criteria = session.createCriteria(GeUser.class);
criteria.add(Restrictions.eq("user_id",user_id));
List<GeUser> users = criteria.list();
if (users.size() > 0) {
return users.get(0);
} else {
return null;
}
}
public GeUser getUser(int user\u id){
条件=session.createCriteria(GeUser.class);
添加(限制.eq(“用户id”,用户id));
列表用户=criteria.List();
如果(users.size()>0){
返回用户。获取(0);
}否则{
返回null;
}
}
这是一个简单的情况,可以通过延迟加载来解决。您可以指定FetchType。只有在活动会话中访问它时,才会在Algo
内加载延迟匹配项
...
@Entity
public class Algo{
...
// I want to skip this when GeUser entity is loading from db. Should be e.g. matches == null
@ManyToMany(fetch = FetchType.LAZY )
protected List<DbMatch> matches = new ArrayList<DbMatch>();
...
。。。
@实体
公共类算法{
...
//当GeUser实体从db加载时,我想跳过这个步骤。应该是例如matches==null
@ManyToMany(fetch=FetchType.LAZY)
受保护列表匹配项=新建ArrayList();
...
有关延迟加载的更多详细信息,请遵循以下教程:
希望有帮助,如果需要进一步帮助,请随意评论!这是一个简单的情况,可以通过延迟加载来解决。您可以指定FetchType。只有在活动会话中访问它时,才会加载延迟匹配内算法匹配匹配
...
@Entity
public class Algo{
...
// I want to skip this when GeUser entity is loading from db. Should be e.g. matches == null
@ManyToMany(fetch = FetchType.LAZY )
protected List<DbMatch> matches = new ArrayList<DbMatch>();
...
。。。
@实体
公共类算法{
...
//当GeUser实体从db加载时,我想跳过这个步骤。应该是例如matches==null
@ManyToMany(fetch=FetchType.LAZY)
受保护列表匹配项=新建ArrayList();
...
有关延迟加载的更多详细信息,请遵循以下教程:
希望有帮助,如果需要进一步帮助,请随时发表评论!跳过关系是什么意思?抱歉,匹配项应为null,GeUser.picks.get(0).algo.matches=null。请详细说明问题。我的目标是获取GeUser实体,但没有上一个关系数据是什么意思?
?编辑了我的帖子,现在更好了?更好了!请查看我的答案,如果它符合目的,请接受。:)跳过关系是什么意思?抱歉,匹配应该为null,GeUser.picks.get(0).algo.matches=null。请详细说明问题。我的目标是获取GeUser实体,但没有最后的关系数据是什么意思?
?编辑了我的帖子,现在更好了?更好了!请查看我的答案,如果它符合目的,请接受。:)谢谢你为我指明了正确的方向,在阅读了hibernate惰性加载之后,我理解了h它是如何工作的,但现在我有了一个新问题,关于如何不使用spring controller和jackson将匹配项传递给web应用程序,答案在这里,谢谢您为我指明了正确的方向,在阅读了hibernate惰性加载后,我了解它是如何工作的,但现在我有了一个新问题,关于如何不使用spring controller和jackson将匹配项传递给web应用程序答案在这里