Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Jpa 限制游戏中一对一关系的记录!框架_Jpa_Playframework - Fatal编程技术网

Jpa 限制游戏中一对一关系的记录!框架

Jpa 限制游戏中一对一关系的记录!框架,jpa,playframework,Jpa,Playframework,我正在尝试确定在游戏中使用JPA时查询OneToMany关系的子级时,分页/限制返回行的最佳方式!框架 @Entity public class User extends Model { @OneToMany(mappedBy="user", cascade=CascadeType.ALL) public List<CaseFolder> caseFolders; } public class CaseFolder extends Model {

我正在尝试确定在游戏中使用JPA时查询OneToMany关系的子级时,分页/限制返回行的最佳方式!框架

@Entity
public class User extends Model {

    @OneToMany(mappedBy="user", cascade=CascadeType.ALL) 
    public List<CaseFolder> caseFolders;

}


public class CaseFolder extends Model {

    @Required
    @ManyToOne 
    public User user;

    @Required
    public String number;

    public String description;

}
但我找不到任何关于“开箱即用”的方法

当每个人都需要一个1-m关系中的几个“孩子”时,他们真的会把整个相关数据集都带到内存中吗


我正在实现一个具有分页功能的用户界面(使用jqgrid),用户可能有数千条记录。

经过进一步研究,我得出了以下答案:

关系的“许多”方面——所有caseFolders的集合——是用户的属性。根据定义,该属性的值是整个集合

为了获得这些元素的子集,我在用户模型中添加了以下方法:

public List<CaseFolder> getCaseFolders(String sidx, String sord, int start, int limit) {

    String orderBy = "c." + sidx + " " + ((sord.toUpperCase().equals("ASC")) ? "ASC" : "DESC");

    String jpql =   "SELECT c " +
                    "FROM CaseFolder c " +
                    "WHERE c.user = :user " +
                    "ORDER BY " + orderBy;

    Query query = JPA.em().createQuery(jpql)
        .setParameter("user", this)
        .setFirstResult(start)
        .setMaxResults(limit);

    List<CaseFolder> result = query.getResultList();
    return result;

}
public List getCaseFolders(字符串sidx、字符串sord、int start、int limit){
字符串orderBy=“c.”+sidx++((sord.toUpperCase().equals(“ASC”))?“ASC”:“DESC”);
String jpql=“选择c”+
“来自CASE文件夹c”+
“其中c.user=:user”+
“订购人”+订购人;
Query Query=JPA.em().createQuery(jpql)
.setParameter(“用户”,本)
.setFirstResult(开始)
.setMaxResults(限制);
List result=query.getResultList();
返回结果;
}

你能解释一下什么是JPA.em()吗?它似乎创建了实体管理器。但是JPA是什么呢?这是一个静态方法吗?JPA是一个由Play定义的助手!与JPA合作。em()是JPA助手的一个方法&返回实体管理器。播放文档中的更多信息:
public List<CaseFolder> getCaseFolders(String sidx, String sord, int start, int limit) {

    String orderBy = "c." + sidx + " " + ((sord.toUpperCase().equals("ASC")) ? "ASC" : "DESC");

    String jpql =   "SELECT c " +
                    "FROM CaseFolder c " +
                    "WHERE c.user = :user " +
                    "ORDER BY " + orderBy;

    Query query = JPA.em().createQuery(jpql)
        .setParameter("user", this)
        .setFirstResult(start)
        .setMaxResults(limit);

    List<CaseFolder> result = query.getResultList();
    return result;

}