Spring Data JPA:是否可以定义包含非实体对象字段的实体?
Spring Data JPA: Is it possible to define an entity containing a non-entity object field?
是否可以将字段类型分配为实体中的另一个对象,而不将该对象也指定为实体?
在此示例中,每个块都有一个位置,其中包含有关该位置状态的各种信息。
@Entity
public class Block {
@Id
@GeneratedValue
private long id;
private String name;
private int quantity;
private double buyPrice;
private double sellPrice;
@ManyToOne
private Player player // <-- is another Entity
private Location location // <-- is not an Entity. Contains various fields regarding the block's location information.
...
}
从数据库的角度来看,我希望所有的块数据及其对应的位置数据都在一个table中,因为它是一对一 关系,否则会导致不必要的连接和复杂性。
从 OOP 的角度来看,我希望将特定于方块位置的字段包含在单独的对象中,以便轻松区分方块状态和位置状态。
我知道我可以创建 DTO 并以我想要的任何方式映射数据,但想知道是否有任何方法可以“开箱即用”
查看 @Embeddable
和 @Embedded
。
这个问题应该从两个方面来理解,
第一种方法应该可以在实体中有对象但不能在数据库中
下一种方法是它应该在数据库中而不是在实体中。
所以我们可以在代码中使用@Transient 和@Embeddable。
JPA或Hibernate中的@Transient注解用于表示一个字段不被持久化或忽略字段保存到数据库中。 @Transient 存在于 javax.持久性包。它用于注释 属性 或实体 class 的字段、映射的超 class 或可嵌入的 class
在跟随@Embedd 时我们必须覆盖属性,
请仔细阅读下面的 link 以获得更清楚的信息
是否可以将字段类型分配为实体中的另一个对象,而不将该对象也指定为实体?
在此示例中,每个块都有一个位置,其中包含有关该位置状态的各种信息。
@Entity
public class Block {
@Id
@GeneratedValue
private long id;
private String name;
private int quantity;
private double buyPrice;
private double sellPrice;
@ManyToOne
private Player player // <-- is another Entity
private Location location // <-- is not an Entity. Contains various fields regarding the block's location information.
...
}
从数据库的角度来看,我希望所有的块数据及其对应的位置数据都在一个table中,因为它是一对一 关系,否则会导致不必要的连接和复杂性。
从 OOP 的角度来看,我希望将特定于方块位置的字段包含在单独的对象中,以便轻松区分方块状态和位置状态。
我知道我可以创建 DTO 并以我想要的任何方式映射数据,但想知道是否有任何方法可以“开箱即用”
查看 @Embeddable
和 @Embedded
。
这个问题应该从两个方面来理解, 第一种方法应该可以在实体中有对象但不能在数据库中 下一种方法是它应该在数据库中而不是在实体中。 所以我们可以在代码中使用@Transient 和@Embeddable。
JPA或Hibernate中的@Transient注解用于表示一个字段不被持久化或忽略字段保存到数据库中。 @Transient 存在于 javax.持久性包。它用于注释 属性 或实体 class 的字段、映射的超 class 或可嵌入的 class
在跟随@Embedd 时我们必须覆盖属性, 请仔细阅读下面的 link 以获得更清楚的信息