2017-04-12 34 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

@維京我更新了答案。 –

相關問題