如果该字段是一个集合(让我们说它是Formula
),是否可以使用Set
计算字段和实体?
这是我试图实现的虚拟例子:
@Formula(value =
"SELECT NEW com.example.entity.Person(p.name, p.age) FROM Person p")
lateinit var people :Set<Person>
答案 0 :(得分:0)
来自@Formula
的JavaDoc:
定义一个公式(派生值),它是 SQL片段 ...
您必须将您编写的片段视为select语句中的替换:
SELECT (formulaValue) AS propertyName FROM ....
您可以写入formulaValue
的所有内容都可以在@Formula
中使用。
您的示例不是有效的SQL片段,正如您所看到的,无法从@Formula
返回多个值。
但您可以使用@Subselect
和包装器对象:
@Entity
@Subselect("SELECT name, age FROM Person p")
public class PersonWrapper {
@Id
private String name;
private int age;
}
(在Java中,因为我不知道Kotlin的正确语法)
如果您确实需要在另一个实体中收集这些值,则需要加入某些内容(示例中缺少这些内容)并在@OneToMany
或@ManyToMany
中使用该值。否则,在您的实体中使用所有这些值是没有用的,因为所有实体都具有相同的集合。