java - Ebean无法获取oneToMany关系

标签 java sql playframework ebean

我有一个具有文件属性的 Post 实体:

    @Entity
    public class Post extends Model {
    @Id
    private long id;
    @ManyToOne
    private PostType postType;
    @ManyToOne
    private User user;
    @ManyToOne
    private Category category;

    @OneToMany (cascade = CascadeType.PERSIST)
    private List<ImageLink> files;
    private String description;
    private int likes;
    private int messages;
    private boolean liked;
    private boolean saved;
    private Date timesTamp;

    //getters and setters

    }

我尝试在传递 RawSql 后获取属性文件(我还获取其他属性):

    public Result test(){

        long user_id = 1;

        String sql =
                "SELECT p.id, p.description, p.likes, p.times_tamp, u.id, " +
                "u.name, u.phone, u.profile_url, u.rate, u.rate_count, c.id, " +
                "EXISTS ( " +
                "SELECT * " +
                "FROM likes " +
                "WHERE p.id = likes.post_id " +
                "AND likes.user_id = "+user_id +
                ") AS liked "+
                "FROM post p " +
                "JOIN user_ u ON u.id = p.user_id "+
                "JOIN category c ON c.id = p.category_id";

        RawSql rawSql = RawSqlBuilder
                .parse(sql)
                .tableAliasMapping("u", "user")
                .columnMapping("c.id", "category.id")
                .create();


        List<TestEntity> data = TestEntity.finder
                .query()
                .setRawSql(rawSql)
                .fetch("files.image", "url")
                .findList();


        return ok(Ebean.json().toJson(data));
    }

问题是,当我使用 Ebean.json().tojson(data) 返回查询结果时,未返回 files 属性。 这是返回的结果:

{
    "id": 1,
    "user": {
        "id": 18,
        "name": "smozi_shop",
        "phone": "+22969298229",
        "profileUrl": null,
        "rate": 0.0,
        "rateCount": 0
    },
    "category": {
        "id": 1
    },
    "description": "smozi",
    "likes": 1,
    "liked": false,
    "timesTamp": 1575956493968
}

注意到,当我使用 json.toJson(data) 返回结果时,它返回了 Post 实体的所有属性 我可以使用 json.toJson(data) 但在网络上加载数据会很繁重。

我只想检索(选择)所需的属性(包括文件属性)。

谢谢

最佳答案

您还需要在 ImageLink 上进行 JOIN,以将其包含在结果集中。

关于java - Ebean无法获取oneToMany关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59490802/

相关文章:

java - 在 JTextArea 中剪切和粘贴

sql - 查找仅包含特定值的行

scala - 找不到参数 flash 的隐式值

java - 为什么这个例子的时间复杂度是从 "Cracking the Coding Interview"O(k c^k)?

java - 将 C++ vector 传递给文件编写器

java - 如何获取对 ScheduledThreadPoolExecutor 的 Future 的引用

sql - sql参数保护你免受什么?

mysql - 还显示具有 NULL 值的行

java - 无法使用 Play Framework 导入 commons io

java - 使用 Java 在 Play 框架中链式 promise