Hibernate中的一个问题

数据库中有两个表TableA和TableB,这两个表分别映射成为两个实体类EntityA和EntityB,两个实体之间存在一对多的关系(一个EntityA包含多个EntityB),在代码中如下
class A{
...
Map CollectionOfEntityB;
...
}
而且数据库中TableA和TableB的主键都是多个字段的,这种情况下在编写映射的XML文件时,class A的标签中,要写上一个<map>标签
<map>标签下有一个<key>标签,看了文档,它应该指示为A的主键,但是由于A的主键是多个列组成的,这种情况下应该怎样写这个XML文件呢?哪位能帮忙解答一下,多谢了

用一个无任何实际意义的字符做主键,这是基本原则,不要再用几个字段做主键这种形式了...
注意看看Hibernate的reference文档

我也很想知道这个问题!

如果数据库表做成那样,不能轻易修改了,用hibernate有什么解决的方法呢? robbin大侠说说看~)

如果使用的以前遗留的系统,那么很难轻易修改数据库结构,Hibernate 中没有给出好的解决方案吗?

这是那5%里的东东!

标签是什么东西?
按照你的说法应该用composite-id阿。

可以使用复合主键,但是Gavin推荐的方式是自定义一个UserType,把那几个字段包含进去,用这个UserType作为主键。UserType的编写很简单的,记得前面有一个帖子我和一个人讨论过这个问题的,搜索一下。

在class A的映射文件中,有下面代码


<map name="ClassB" table="TableB" lazy="true">
<key column=
"" /><!--这个地方应该写什么,因为A的主键是由好几个字段构成的,应此不能只写一个column呀-->
<index ...>
<one-to-many class=
"EntityB"/>
</map>

看了看reference的文档,关于
<key>
的解释如下:
Collection instances are distinguished in the database by a foreign key to the owning entity. This foreign key is
referred to as the collection key . The collection key is mapped by the <key> element.

我想上文中的“owning entity”,就应该是EntityA(它包含了一个EntityB的集合),所以

<key>
应该是指TableA的主键,现在的问题是:
<key>
标签中的column属性只允许填充一个字段,而EntityA
却是一个composite-id,含有好几个字段,让我比较搞不清状况了。这就是我的问题所在。
不知道我理解的对不对,请各位指教。谢谢