我是靠谱客的博主 幸福砖头,最近开发中收集的这篇文章主要介绍 复合主键的多对一问题,请问如何解决,已给出表结构.,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

http://www.huij.net/html/WEB_kaifa/JSP/20061021/33772.html

create table TAA(
FAIDint,
FAID2int,
FaNamevarchar(50),
CONSTRAINT PK_AA PRIMARY KEY (FAID,FAID2)
)

create table TBB(
FBIDint,
FAIDint,
FAID2int,
FbName varchar(50),
constraint PK_BB primary key (FBID),
CONSTRAINT FK_B_A FOREIGN KEY (FAID,fAId2) REFERENCES TAA(FAID,faId2)
)
我有如上两张表,复合主键的多对一关系,请问在HIBERNATE3 里面这两张表的映射应该是什么样的?用HIBERNATE自动生成的映射文件不符合我的要求.


学习 up

又是联合主键。。。已经有几篇帖子讨论过联合主键的问题了,再发表次愚见,HIBERNATE尽量不要使用联合主键

数据库原本就是这样设计的,并且使用多年,我不可能因为HIBERNATE不能实现就把数据库改啦,而且原有系统的改造势必造成更大的损失,所以没办法只好来此问问有没有谁也遇到过这种问题,希望能够得到一个可行的解决方法.

可是现在大多数代码都是基于HIBERNATE做的.要换也来不及啦.

人呢?

两种实现方法
1 复合主键由实体类中的属性组成
2 复合主键直接由类来实现

不建议使用联合主键不是因为HIBERNATE实现不了,而是使用HIBERNATE处理联合主键性能消耗巨大

字串3



各位我现在就想知道该如何实现或者有什么变通的方法来实现,网上能够找到的资料都是单主键的关联.

就上面两张表的关联各位老大能否给个确实能行的映射.

up

三个类吧

两个字段FAID,FAID2组成一个类,然后使用业务无关id做PK.


UP

D

看来这个问题是无法解决啦.

CPLiu(老了)"不建议使用联合主键不是因为HIBERNATE实现不了,而是使用HIBERNATE处理联合主键性能消耗巨大"

你先不用管我的机器性能是否消耗巨大,先给我实现这两张表的映射看看?

<many-to-one name="TAA" class="Taa" not-null="false" >
<column name="Faid" />
<column name="Faid2" />
</many-to-one>

<set name="TAABB" inverse="true">
<key>
<column name="Faid"/>
<column name="Faid2"/>
</key>
<one-to-many class="TBB"/>
</set>

字串4



TBB b = new TBB();
Session ms = HibernateSessionFactory.currentSession();
b = (TBB) ms.load(b.getClass(), 1);
System.out.println(b.getFbName());
System.out.println(b.getTAA().getId().getFaid());
System.out.println(b.getTAA().getId().getFaid2());
System.out.println(b.getTAA().getFaName());
System.out.println("---------------------");
Taa a = new Taa();
TAAPK key = new TAAPK();
key.setFaid(new Integer(1));
key.setFaid2(new Integer(2));
a = (Taa) ms.load(a.getClass(), key);
Iterator it = a.getTAABB().iterator();
System.out.println(a.getTAABB().size());
while (it.hasNext()) {
b = (TBB) it.next();
System.out.println(b.getFbName());
}

这么长时间以来没人解决,遗憾ing.....

结贴.给分,看来国内大多数人在用HIBERNATE的时候都没能够真正去研究.

而HIBERNATE的说明书也没有很好地对这个问题进行说明.不怪大家,感谢各位的参与.
分给有效的答案.

最后

以上就是幸福砖头为你收集整理的 复合主键的多对一问题,请问如何解决,已给出表结构.的全部内容,希望文章能够帮你解决 复合主键的多对一问题,请问如何解决,已给出表结构.所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部