Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用hibernate@Formula获取集合_Java_Spring_Hibernate_Jpa - Fatal编程技术网

Java 使用hibernate@Formula获取集合

Java 使用hibernate@Formula获取集合,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我有一个类似的数据库结构。唯一的区别是我在从A到C实体的路径上有更多的表: 我对这个结构有以下映射: @Entity @Table(name = "a") class A { @Id private int id; private String title; @ElementCollection(targetClass=String.class) @Formula("(select (c.useful_informatio

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

我对这个结构有以下映射:

@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。传递给此注释的值实际上是SQL,而不是JPQL


因此,如果要将该表别名以在其他地方引用它,则需要将A作为A写入。

1。在where 2之前缺少一个空格。什么是身份证?它没有分配给任何表,也没有标记为参数。这只是一个例子。在我最初的示例中,where后面有一个空格。Id是当前实体的Id。那么A.Id=A.Id时如何调用?这将始终导致true,因此是无用的。因为它只允许为当前实体获取行。这意味着表中的a.id与当前实体i匹配,因为您得到了语法错误,并且没有说明它们是什么。生成的SQL就是问题的答案,所以请发布它