Java 如何将计算字段映射到JPA实体?
我试图找到一种方法,在JPQL查询中放置一个计算字段,以映射到SpringBoot中的实体 我刚才的示例列出了一个静态数字,但我打算将来也将其用于聚合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 " + "
@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";