【问题标题】:one to many pagination with subselect使用子选择进行一对多分页
【发布时间】:2015-12-16 10:19:23
【问题描述】:

类看起来像这样

@Entity
@Table(name = "orders")
//@FetchProfiles({
public class Orders implements Serializable {

@Column
private String ...

@OneToMany
@JoinColumn(..
//@OrderBy("sequence desc")
//@Fetch(FetchMode.SUBSELECT)
private List<OrderedProducts> orderedProducts;
}

案例 1: 如果我使用一对多的渴望/(懒惰)然后 subselect 工作正常。

是否可以使用获取配置文件? (仅支持加入)

案例 2: 列出数据以获取父级和子级的限制(分页)。我在 List (1000->25) 中使用 subList 功能。

示例:一位家长多个孩子 如果我使用最大结果 5,它只给出 一个记录,如果父母有 5 个孩子的

谁能给我一些想法来使用休眠条件处理这种情况?

案例 3: 如果子属性用 order by 注释,而执行时间 order by 在父订单规范之前添加

示例:按 child.prop,this_.prop 排序

有没有其他方法可以配置父属性顺序然后子属性顺序?

示例:按 this_.prop,child.prop 排序

注意 我正在在应用程序范围之外发送数据。所以,延迟初始化是行不通的。

【问题讨论】:

    标签: java hibernate spring-mvc pagination


    【解决方案1】:

    案例 2: 使用 subList 获取 all 列表和拆分结果,这太糟糕了。

    最后我做了一个额外的查询来获得预期的结果没有从数据库中获取所有记录。

    方法:

    1。获取总计数(如果有限制)。

         Example: count=10000
    

    注意: Projections 中的 rowCount 获取计数

    2。根据限制获取根实体主键id's

         Example: {1,2,...25} from 10000
    

    注意:id() 在投影中只得到 id 的

    3。然后,为所有子实体创建别名以及主键 ID (2) 中的附加限制属性。

         Example: {----},{----}... from 10000 where property in (1,2,..25) -> 25 Full Objects
    

    【讨论】:

      猜你喜欢
      • 2018-08-13
      • 2015-02-24
      • 2011-08-27
      • 1970-01-01
      • 1970-01-01
      • 2017-03-12
      • 2020-09-19
      • 2014-10-10
      • 1970-01-01
      相关资源
      最近更新 更多