JPA:如何扩展类并更改表映射?

时间:2010-09-19 22:42:07

标签: java jpa mapping

我创建了一组基本的类,其中包含进行会计的方法。

My Ledger类允许您维护一个基本分类帐,它允许您获取当前余额,并在添加新LedgeEntry的分类帐上执行交易。

我的通用分类帐系统运作良好。

Insider Ledger是我的LedgerEntry集合,它是一个List条目。

现在,我想用它来创建Billing / BillingEntry实体(映射为BILLING和BILLING_ENTRIES表)和CustomerCredits / CustomerCreditsEntry entites(映射到CUST_CREDITS; CUST_CREDITS_ENTRY)。

我想通过从Ledger和LedgerEntry扩展来创建这些类。可以使用@Table注释轻松地将父实体类(Ledger,Billing,CustomerCredits)映射到不同的表。

但我不知道如何处理用相应的BillingEntry,CustomerCreditsEntry替换LedgerEntry实体。


编辑2010-09-24:

我只是放弃了,并且所有Ledger-enviced entites都会转到孩子LedgerEntry实体(现在)。

我认为,这里的问题是我不能在父类中创建引用只存在于继承类中的对象的方法吗?

1 个答案:

答案 0 :(得分:0)

这听起来像是泛型的纯粹场景:)

我想象的是:

public class Ledger<T extends LedgerEntry> {
   List<T> entries;
   // getters and setters
}

public class CustomerCreditsLedger extends Ledger<CustomerCreditsEntry> {
}

并且可能为了使用表继承来连接JPA,请看一下:http://www.jpox.org/docs/1_2/jpa_orm/inheritance.html(它是旧的,但似乎是正确的,并且找出基于注释的配置并不那么难)。根据我的阅读,你应该看看JOINED或TABLE_PER_CLASS策略。