2011-08-12 57 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