Jpa 限制游戏中一对一关系的记录!框架
我正在尝试确定在游戏中使用JPA时查询OneToMany关系的子级时,分页/限制返回行的最佳方式!框架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 {
@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;
}