如何在拥有实体中包含一对一映射实体属性的某些(或全部)属性。
我已经创建了一个示例来考虑该问题:
@Data // Lombok's to contain all getter and setters
@Entity
@Table(name = "room")
public class Room {
@Column
int length;
@Column
int breadth;
}
@Data // Lombok's to contain all getter and setters
@Entity
@Table(name = "dance_room")
public class DanceRoom {
@Column
int numberOfPeople;
@OneToOne
Room room;
}
现在,我希望DanceRoom
实体在该实体中也具有length
属性,但它们不应位于dance_room
数据库表中。
我认为是的直接解决方案是:
@Data // Lombok's to contain all getter and setters
@Entity
@Table(name = "dance_room")
public class DanceRoom {
@Column
int numberOfPeople;
@OneToOne
Room room;
public int getLength() {
return room.length;
}
}
是否可以在DanceRoom
JPA实体中创建那些属性,并将列保留在room
数据库表中?
或者还有其他方法可以创建这种映射吗?
答案 0 :(得分:1)
根据实体名称和访问数据的方式,我建议使用 Inheritance 。
有人会说关系数据库没有继承。是的,但是一般来说,JPA和ORM工具允许我们将这些关系映射到数据库。
只需将 Room 实体设置为 DanceRoom 实体的父级,只需遵循先前的链接即可。