hibernate能不能 显式禁止多态查询

sansong089 2007-11-27 10:11:44
假设采用Table per subclass的映射的方式,映射文件
<class name="Payment" table="PAYMENT">
<id name="id" type="long" column="PAYMENT_ID">
<generator class="native"/>
</id>
<property name="amount" column="AMOUNT"/>
...
<joined-subclass name="CreditCardPayment" table="CREDIT_PAYMENT">
<key column="PAYMENT_ID"/>
<property name="creditCardType" column="CCTYPE"/>
...
</joined-subclass>
<joined-subclass name="CashPayment" table="CASH_PAYMENT">
<key column="PAYMENT_ID"/>
...
</joined-subclass>
<joined-subclass name="ChequePayment" table="CHEQUE_PAYMENT">
<key column="PAYMENT_ID"/>
...
</joined-subclass>
</class>

当使用from Payment的查询时,会同时查询所有的子类,生成大量的join子查询。
请问那位大侠知道通过那种方法,使用from Payment时,只查询Payment而不查询子类。
这个问题困扰了很久,网上没找到相关资料。


...全文
475 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
超越自己 2012-02-15
  • 打赏
  • 举报
回复
请问楼主是怎么解决的啊,我也遇到这样的问题了
zuohao821221 2011-03-18
  • 打赏
  • 举报
回复
hibernate 的属性要灵活的运用 hibernate的性能才能得到极大的发挥。。。。要不然为什么用hibernate还不如用JDBC呢
sansong089 2007-12-02
  • 打赏
  • 举报
回复
问题终于解决了,主要是按照aChinese的思路弄的。
sansong089 2007-12-01
  • 打赏
  • 举报
回复
真是没有人气呀
发两句牢骚,说实话感觉csdn讨论的问题,都是一些很简单的问题,稍微深入一点的肯定讨论不起来,我以前的帖子几乎没有满意结贴过。好像这里还不如javaeye专业。
aChinese 2007-11-30
  • 打赏
  • 举报
回复
比如: 写一个单独的 Payment类, 没有子类,不想查子类的时候可以用这个类
<class name="BasePayment" table="PAYMENT" polymorphism="explicit">
<id name="id" type="long" column="PAYMENT_ID">
<generator class="native"/>
</id>
<property name="amount" column="AMOUNT"/>
...

</class>

然后原来的这个类, 继承Payment, 做为基类
<class name="BasePayment" table="PAYMENT">
<id name="id" type="long" column="PAYMENT_ID">
<generator class="native"/>
</id>
<property name="amount" column="AMOUNT"/>
...
<joined-subclass name="CreditCardPayment" table="CREDIT_PAYMENT">
<key column="PAYMENT_ID"/>
<property name="creditCardType" column="CCTYPE"/>
...
</joined-subclass>
<joined-subclass name="CashPayment" table="CASH_PAYMENT">
<key column="PAYMENT_ID"/>
...
</joined-subclass>
<joined-subclass name="ChequePayment" table="CHEQUE_PAYMENT">
<key column="PAYMENT_ID"/>
...
</joined-subclass>
</class>

大概就是这么做吧, 或者反过来Payment继承BasePayment, 具体怎么弄以前搞过,现在不太记得
aChinese 2007-11-29
  • 打赏
  • 举报
回复
joined-subclass 本来就是要join的。 你可以用其他继承方式嘛。
要不然在设计上改变, 另写一个轻量的类映射PAYMENT, 然后原来的这个类继承轻量类, 在使用polymorphism="explicit" 避免查轻量类时候关联查子类
sansong089 2007-11-29
  • 打赏
  • 举报
回复
aChinese你说的很有道理但是我不太清楚怎么做,具体讲一下,多谢了。
sansong089 2007-11-29
  • 打赏
  • 举报
回复
我试过了这样不行,好像这个属性不是想的那个意思。
sansong089 2007-11-29
  • 打赏
  • 举报
回复
Table per subclass的映射的方式,能不能显示的阻止多态查询,即:查询父类时不查询子类。
java1978 2007-11-28
  • 打赏
  • 举报
回复
没搞明白你要说的意思?既然不想关联为什么配置<joined-subclass呢?如果没有配置不就不用关联了吗?
aChinese 2007-11-28
  • 打赏
  • 举报
回复
完全可以
<class name="Payment" table="PAYMENT" polymorphism="explicit" >
sansong089 2007-11-28
  • 打赏
  • 举报
回复
好长时间没上csdn了,改版之后第一次上,多有点不会用了,发帖的时候也没提示我加分,20分太少了,加分还有五天以上,不知道5后帖子是不是已经沉了。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧