开发者

Single Table Inheritance Query

i have an existing table for TransactionLogs which is either links to a External or to a InternalType. the id's corresponding to the cash adjustment & game transaction are stored in a single column called transaction id and a separate column called type indicates which table is it linked to

Because of the nature of the existing table, i mapped it in a single table inheritance:

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

开发者_如何学Go@Entity
public class ExternalTransLog extends TransLog {
    @ManyToOne
    @JoinColumn(name = "TransID", nullable = false)
    private ExternalAdjustmentRecord externalAdjustmentRecord;
}

each of these two subclasses has their subclasses with defined descriminator values..

With the setup given above, there are instances that i need to get a unified data of both internal and external records. What is the best way to accomplish this? at first i thought it would be enough to use the TransLog as the root class for the query (i'm using jpa criteria). however, i need to get TransId (which are defined in the subclasses and points to 2 different objects of no relationship).

Thanks.


You can make abstract method in TransLog that returns what you need and implement it in both subclasses.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜