2017-04-12 43 views
0

我在DB中有几个类似的表。
现在我为每个表格使用自己的Model和Repository 但我认为,这是不正确的决定。
我可以为所有类似的表格创建一个Model和Repository吗?如何为相似的表制作一个模型?

@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 
} 

我有一个类似的表:橱柜,客房,CHILDREN_ROOM,厨房,窗帘,薄纱。
哪些代码应该用于存储库?
我试图找到https://docs.spring.io/spring-data/data-commons/docs/1.6.1.RELEASE/reference/html/repositories.html
中的问题的答案但我在这里找不到答案。

你可以给意见,如何使它或链接?

回答

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没有映射任何表。这个房间是一个“虚拟”表,它不存在于数据库中。只有具体实体以表格形式存在,如Bedroom

在这里,您有链接到官方的javadoc: http://docs.oracle.com/javaee/5/api/javax/persistence/MappedSuperclass.html

+0

你能给我的链接解释如何做到这一点? – Viking

+0

@维京我会更新我的答案 –

+0

@维京我更新了答案。 –

相关问题