2017-02-15 41 views
2

我正在使用Spring引導,彈出JPA並且有以下問題:我創建了一些類「B」,它從JAR擴展了某些類「A」 ,在類「B」上放上@Entity@Table註解(我不能在類「A」上做同樣的事情),但是當Spring/Hibernate創建表時,只包含類「B」中的字段。即在數據庫JPA註釋將包含來自非實體超類的字段(來自JAR!)

+--------+        +--------+--------+ 
| fieldB | but I want this to be made | fieldA | fieldB | 
+--------+        +--------+--------+ 

創建

// some class from JAR 
// not an Entity 
class A { 
    String fieldA; 
} 

@Entity 
@Table(name = "B") 
class B extends A { 
    String fieldB; 
} 

表如何管理的?有沒有可以放在B類上的JPA註解來解決這個問題?

編輯:如果@AttributeOverride註釋的解決方案,如何來標記被覆蓋的領域作爲Id@Id註釋不能在類外被放?

回答

0

您可以在吸氣劑上設置@Id

@Entity 
@Table(name = "B") 
class B extends A { 
    String fieldB; 

    @Id 
    @Override 
    public String getFieldA() { 
     return super.getFieldA(); 
    } 
} 
+0

是的,我試過,但在這種情況下的問題是,我需要實施setter太,我想跳過。超類沒有setter,因爲它使用builder來安裝它。 – milosdju

+0

這是真的.Builder-pattern和JPA不是最好的朋友。另外兩個「解決方案」是映射這些值,並用反射(我知道......)從B構建setter。 – jklee

相關問題