使用hibernate @Formula来获取集合

时间:2018-03-20 12:39:59

标签: java spring hibernate jpa

我有一个类似的数据库结构。唯一的区别是我在从A到C实体的路径上有更多表:

db structure example image

我对此结构进行了以下映射:

@Entity
@Table(name = "a")
class A {
    @Id
    private int id;

    private String title;

    @ElementCollection(targetClass=String.class)
    @Formula("(select (c.useful_information) from A a " +
            "join B b on a.id = b.a_id " +
            "join C c on b.id = c.b_id " +
            "where a.id = id)")
    private List<String> usefulStuff;
}

我的目标是从实体A中的表C中获取所有有用的东西的列表。

但是我遇到语法错误。

你能说出我的例子中有什么不对吗?也许你知道更好的方法来实现这个目的吗?

1 个答案:

答案 0 :(得分:0)

您的@Formula批注中的问题是“来自A a”。传递给该批注的值实际上是SQL,而不是JPQL。

因此,如果要为表加上别名以在其他地方引用它,则需要编写FROM A AS a