我试图找到一种方法,在JPQL查询中放置一个计算字段,以映射到Spring Boot中的实体。
我刚才的例子列出了一个静态数字,但我打算将来也将其用于聚合。
@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中;com.School位于加载器“app”的未命名模块中”)”,
如果我将num作为学校实体的成员取出,则没有错误。
那么,如何在JPQL查询中放入计算值以映射到实体中呢?
我想你需要用一个公式
@NamedQuery(name = "findSchool",
query = "SELECT s" +
"FROM School s " +
"WHERE s.id = :schoolId)
public class School implements Serializable {
@Formula(value = "'9876'")
@JsonView(FindSchoolView.class)
private String num;
请注意,该值不必是常量,但您可以使用任何本机查询(尽管可能会失去一点可移植性)。
如果它不是由SQL生成的,并且您不需要将其保存在db中,那么您也可以执行以下操作:
@Transient
@JsonView(FindSchoolView.class)
private String num = "9876";
实体类如下: 是否有任何方法可以将实体中的Transstatus列映射到枚举的整数值,即状态代码,例如,如果我有枚举值作为NOT_FOUND实体中的Transstatus值应该是12, 编辑请注意,我有两个枚举状态码的值,状态码字符串,我们想要的只是状态码,我们已经用“Ordinal”尝试过了,它打印枚举的整数值,而不是我示例中的状态码
我在寻找更“改进的方法”来实现这一点,我有一种方法,从一个id中获取所有记录,然后“映射”到一个类中,我有大约200个“标记”要映射,这将是一个非常长的if链。。。例子:
我在两个不同的依赖项DependencyA和DependencyB中有两个类TableNameA和TableNameB,它们表示表table_name_a和table_name_b,字段如下所述。 如上所述,我正在使用jooq,并且我想将table_name_a和table_name_b记录映射到TableNameA和TableNameB类中,但是在TableNameA的对象中,只有“FIELD”
我有下面的结构,我想用MapStruct映射这个。 下面是mapstruct为toDTO方法生成的实现 下面是mapstruct为toEntity方法生成的实现 我的问题是方法只在文本不为空时设置注释。但是方法不检查空文本或空文本。因此,如果我在DTO中获得,它将创建一个新的comment对象并将文本设置为null。如何避免这一点?有人能解释一下这种行为并建议我正确的做法吗?谢了!
我有一个实体,它有一个Map ElementCollection字段。我知道使用Jpa,您可以在类级别上使用@Index注释为常规字段定义索引。问题是我的地图元素集合字段创建了一个不是由@Entity注释类创建的连接表。所以我不能使用@Index注释。有没有Jpa/Hibernate方法来定义这个连接表中字段的索引,或者我必须手动定义它们?这是地图字段。 谢谢
问题内容: 我们有一张有很多列的大桌子。移至MySQL Cluster后,由于以下原因无法创建表: 错误1118(42000):行大小太大。不包括BLOB在内的已使用表类型的最大行大小为14000。这包括存储开销,请查阅手册。您必须将某些列更改为TEXT或BLOB 举个例子: 这是用于存储配置参数的表。我在想,我们可以将一些列合并为一个列,并将其存储为JSON对象,然后将其转换为Java对象。 例