2011-08-12 51 views
0

我有一個現有的TransactionLogs表,它是指向External或InternalType的鏈接。對應於所述現金調整&遊戲交易中的ID被存儲在稱爲單塔事務ID和稱爲一個單獨的列類型指示表被它鏈接到單表繼承查詢

由於現有的表的性質的哪個,我映射它在一個單一的表繼承:

@Inheritance(strategy = InheritanceType.SINGLE_TABLE) 
@DiscriminatorColumn(name = "TYPE", discriminatorType = DiscriminatorType.INTEGER) 
public class TransLog implements Serializable { 
    @Id 
    @GeneratedValue 
    private Long id; 
    private Integer type; 
// getters and setters 
} 


@Entity 
public class InternalAdjustmentTransLog extends TransLog { 
    @ManyToOne 
    @JoinColumn(name = "TransID", nullable = false) 
    private InternalAdjustmentRecord internalAdjustmentRecord; 
    // getters and setters 
} 

@Entity 
public class ExternalTransLog extends TransLog { 
    @ManyToOne 
    @JoinColumn(name = "TransID", nullable = false) 
    private ExternalAdjustmentRecord externalAdjustmentRecord; 
} 
這些兩個子類的具有它們的子類具有定義descriminator值

..

與上面給出,T設置這裏是我需要獲得 內部和外部記錄的統一數據的實例。什麼是完成這個最好的方法?起初我認爲這將足以使用TransLog作爲查詢的根類(我使用jpa標準)。然而,我需要獲得TransId(它們在子類中定義並指向2個不相關的對象)。

謝謝。

回答

0

您可以使TransLog中的抽象方法返回您需要的內容並在兩個子類中實現它。

+0

感謝您的回覆,我嘗試在TransLog中創建一個getTransactionId方法,並在兩個子類中實現爲一個惰性init(獲取外部或內部的id),但是我得到一個java.lang.IllegalArgumentException:無法解析屬性[transactionId]反對路徑.. – geneqew