Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.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 如何告诉Hibernate标准跳过深层次的关系?_Java_Hibernate_Hibernate Criteria - Fatal编程技术网

Java 如何告诉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

我有hibernate实体
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应用程序答案在这里