java onetomany_java – 如何使用@OneToMany集合进行分页

假设我有一个Post实体和一个Comment实体和一对多的关系:

@Entity class Post {

...

@OneToMany

List comments;

...

}

我如何实现这样的分页:

Post post = //Find the post.

return post.getComments().fetch(100, 10); // Find the 11th page (page size 10);

是否可以在JPA之上模拟@OneToMany集合的动态分页,

还是要重写JPA的关联机制? (例如创建可以管理分页,排序和搜索的PersistentList集合类型).

P.S .:我最近发现了Play!框架在JPA的顶部使用了非常有趣的lib:锡耶纳.锡耶纳非常容易使用,是JPA / Hibernate之上的一个很好的抽象.但是我找不到如何使用它的关联进行分页.

更新:

Play框架有一个类似于Django的查询语法:

Post.findAll().from(100).fetch(10); // paging

哪里

Post.findAll()

将在Play中返回一个JPAQuery对象,一个自定义的查询类型.

但是关联集合,例如:

Post.comments

将只返回一个列表,它不支持分页或其他查询.

我想知道如何扩展它,所以

Post.comments

也会返回一个JPAQuery对象或类似的,那么可以在“查询”集合上查询:

Post.comments.from(100).fetch(10);

或插入新的注释而不实际获取任何注释:

Post.comments.add(new Comment(...));

在我的第一个想法中,我们可以创建一个List的子类,然后Post类将成为:

@Entity class Post {

...

@OneToMany

QueryList comments;

...

}

而QueryList将具有间接到JPAQuery的fetch(),from()方法.

但是我不知道Hibernate / JPA是否会识别这个,或是干扰它.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值