JPA中的调用方法

Mar*_*nas 9 java methods jpa objectdb

我正在使用带有JPA的ObjectDB.我想调用myMethod().例如:

entityManager.createQuery("SELECT ... FROM ... WHERE MyClass.myMethod() = 100")
Run Code Online (Sandbox Code Playgroud)

可能吗?在类中的方法之前可能需要任何注释吗?

@Entity
public class MyClass implements Serializable {

    @Basic 
    private int x;

    @Basic
    private int y;

    public int myMethod() {
        return x*1000+y;
    }
}
Run Code Online (Sandbox Code Playgroud)

Dat*_*eus 5

JPQL 不完全是一种基于对象的查询语言。您无法定义自己的方法,而且 JPQL 提供的函数集非常有限。因此,如果您想遵守 JPA 规范,那么答案是否定的;必须是特定于 JPA 的实现 - DataNucleus JPA 当然允许您在查询语言中拥有自己的方法(作为供应商扩展),不知道您引用的 JPA 提供程序 - 尽管如此,它只会在数据存储,如果你把代码中的查询方法实现该方法(如类相对)