java - 使用 hibernate @Formula 获取集合

标签 java spring hibernate jpa

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

enter image description here

我对此结构有以下映射:

@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 中获取所有有用内容的列表。

但是我遇到语法错误。

你能说一下我的例子有什么问题吗?也许您知道达到此目的的更好方法?

最佳答案

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

因此,如果您想给表起别名以在其他地方引用它,则需要编写 FROM A AS a

关于java - 使用 hibernate @Formula 获取集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49384488/

相关文章:

java - 如何在任务栏底部没有其他窗口的情况下捕获 Activity 浏览器的屏幕

java - Camel cxf REST 请求未分隔查询参数

java - Apache Camel Spring XML - 从文件名表达式调用 Bean 方法

java - @ManyToMany 三个表之间的关系

java - JPA 避免在插入之前加载对象

java - 每当在 SWT 中的表中创建新列时,默认情况下都会创建监听器,而不必手动添加它们

java - 获取人名首字母的方法

java - 尝试使用 MockMvc 进行测试而不上传任何文件时出现 "The current request is not a multipart request"

java - JPA 支持外连接,无需对象关系映射

java - 使用 Vararg 方法进行 Hibernate Criteria 查询