我在DB中有几个类似的表。
现在我用于每个表自己的模型和存储库
但我认为,这不是正确的决定
我可以为所有类似的表创建一个模型和存储库吗?
@Entity
@Table(name = "BEDROOM", schema = "public")
public class BedroomModel extends AllFinishProductModel{
@Column(name = "PHOTO")
private String photo;
@Id
@Column(name = "ID")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Column
private String name;
@Column(name = "DESCRIPTION")
private String description;
@Column(name = "STRUCTURE") //organza, curtain ....
private String structure;
@Column(name = "PAINT") //abstraction, geometric ....
private String paint;
@Column(name = "HEIGHT")
private String height;
@Column(name = "COLOR")
private String color;
@Column(name = "QUANTITY")
private Double quantity;
@Column(name = "PRICE")
private BigDecimal price;
@Column(name = "SEWED")
private String itIsSewed;
... getters and setters
}
我有一个类似的表:CABINET,GUESTROOM,CHILDREN_ROOM,KITCHEN,CURTAIN和TULLE。
应该将哪些代码用于存储库?
我试图在https://docs.spring.io/spring-data/data-commons/docs/1.6.1.RELEASE/reference/html/repositories.html中找到问题的答案
但我在这里找不到答案。
您能提供建议,如何制作或链接吗?
答案 0 :(得分:1)
您可以在父类上使用带有@MappedSuperclass
注释的实体继承来获取子类/表中的公共属性。
因此,例如,您有一个具有公共属性的父Room
实体,您可以使用@MappedSuperclass
进行注释。
@MappedSuperclass
public class Room {
@Column
private String name;
@Column(name = "DESCRIPTION")
private String description;
// some more common properties
}
和混凝土房间,例如:
@Entity
public class Bedroom extends Room
{
// common properties will be inherited
private Bed bed;
private NightLamp nightLamp;
}
现在,重要的是Room
未映射为任何表格。房间是虚拟的"表,它不存在于db中。只有具体实体以表格形式存在,例如Bedroom
。
这里有官方javadoc的链接: http://docs.oracle.com/javaee/5/api/javax/persistence/MappedSuperclass.html