Java 如何将计算字段映射到JPA实体?

Java 如何将计算字段映射到JPA实体?,java,spring,spring-boot,jpa,jpql,Java,Spring,Spring Boot,Jpa,Jpql,我试图找到一种方法,在JPQL查询中放置一个计算字段,以映射到SpringBoot中的实体 我刚才的示例列出了一个静态数字,但我打算将来也将其用于聚合 @NamedQuery(name = "findSchool", query = "SELECT s, 9876 as num " + "FROM School s " + "

我试图找到一种方法,在JPQL查询中放置一个计算字段,以映射到SpringBoot中的实体

我刚才的示例列出了一个静态数字,但我打算将来也将其用于聚合

@NamedQuery(name = "findSchool",
            query = "SELECT s, 9876 as num " +
                    "FROM School s " +
                    "WHERE s.id = :schoolId)


public class School implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(updatable = false, nullable = false)
    @JsonView(FindSchoolView.class)
    private UUID id;

    @Transient
    @JsonView(FindSchoolView.class)
    private String num;

}
尝试运行查询时,我不断收到以下消息:

“类[Ljava.lang.Object;不能强制转换为类com.School ([Ljava.lang.Object;位于加载程序“bootstrap”的模块java.base中); 学校在加载器的未命名模块中 ‘app’”

如果我将
num
作为
School
实体的成员取出,则没有错误


那么,如何在JPQL查询中放入计算值以映射到实体中呢?

我认为您需要使用

请注意,该值不必是常量,但可以使用任何本机查询(尽管可能会丢失一点可移植性)

如果它不是由SQL生成的,并且您不需要将其保存在数据库中, 然后您还可以执行以下操作:

    @Transient
    @JsonView(FindSchoolView.class)
    private String num = "9876";

是的,我最后做了一个单独的公式注释。你在可移植性上是对的,但这是我愿意接受的否定。我接受答案。干杯!
    @Transient
    @JsonView(FindSchoolView.class)
    private String num = "9876";