gpt4 book ai didi

java - 使用一对多关系时,有没有办法控制子实体的顺序?

转载 作者:行者123 更新时间:2023-12-01 12:31:04 26 4
gpt4 key购买 nike

根据https://developer.android.com/training/data-storage/room/relationships

我们可以建立一对多的关系

public class UserWithPlaylists {
@Embedded public User user;
@Relation(
parentColumn = "userId",
entityColumn = "userCreatorId"
)
public List<Playlist> playlists;
}

@Transaction
@Query("SELECT * FROM User")
public List<UserWithPlaylists> getUsersWithPlaylists();

在两个实体中 UserPlaylist ,我们添加了一个名为 sort_key 的列

目的是,当我们执行查询时,我们可以执行以下操作
@Transaction
@Query("SELECT * FROM User order by sort_key")
public List<UserWithPlaylists> getUsersWithPlaylists();

我们可以控制 List<UserWithPlaylists>的顺序.

但是, List<Playlist> playlists 怎么样?子实体?

我们如何为子实体定义自定义查询 Playlist , 这样我们就可以控制 List<Playlist> playlists订购?

最佳答案

How can we define a custom query for child entity Playlist, so that we can have control over List playlists ordering?



恐怕这里没有开箱即用的方式。

使用 @关系 您所拥有的注释是:
  • 5 annotation's parameters ( associateBy , 实体 , 实体列 , parentColumn , 投影 没有影响它们的顺序表的项目)
  • 在关系的引擎盖下 Room 使用两个查询 - 首先你明确地写在你的 DAO
  • SELECT * FROM User order by sort_key

    另一个 - 用于从子表中获取数据(基于查询结果的类型和 @Relation 参数):
    SELECT * FROM PlayList WHERE userCreatorId IN (<List of users id from the first query>)

    此查询是自动生成的,您 @关系 注释没有选项可以更改其中项目的顺序。

    当然,在得到这个“无序”的结果后,你可以手动添加一些后处理来实现你想要的

    关于java - 使用一对多关系时,有没有办法控制子实体的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61995635/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com