有关一个hibernate关联查询的问题.
现在有一个项目,数据库里有这么几张表
book_info,article_info,consultation_info这三张表分别叫做书籍信息表,期刊文章信息表,资讯信息表,记录三种不同数据的基本信息.
另外有一张表叫sysstat,上面三种数据在被访问过一次后,就会在此表中保留信息,这个表有一个data_id字段来关联它所记录的数据,另有一个字段叫data_sum,是用来记录数据的访问量的...
现在是重点,我想通过hibernate的hql进行外连接查询上面三个表的数据,要关联上sysstat表中它所对应的访问量这个字段的数据来使用.
我现在的想法是在映射文件中做配置,但有了一个问题,就是sysstat中会出现一个字段的多个 <many-to-one> .我把写的配置文件贴出来.
hibernate-mapping>
<class name= "com.thinkroc.cpub.domain.SysStat " table= "CPUB_T_SYS_STAT " lazy= "false ">
<id name= "mainId " type= "java.lang.String ">
<column name= "MAIN_ID " length= "50 " />
<generator class= "assigned "> </generator>
</id>
..................省略中间的属性配置
<many-to-one name= "articleInfo " class= "com.resoft.bms.qkgl.domain.ArticleInfo " column= "data_id " insert= "false " update= "false " >
</many-to-one>
<many-to-one name= "consultationInfo " class= "com.resoft.bms.zxgl.domain.ConsultationInfo " column= "data_id " insert= "false " update= "false ">
</many-to-one>
<many-to-one name= "bookInfo " class= "com.resoft.bms.tsgl.domain.BookInfo " column= "data_id " insert= "false " update= "false ">
</many-to-one>
注意看下面的 <many-to-one> 配置,sysstat的data_id,作为外键关联多个实体bookInfo,articleInfo,consultationInfo中的主键main_id,这样写可以吗?或者有没有别的什么办法来进行关联.
期待高手..................
有高手看不明白的请提问,我会进一步说明,项目紧张,急需合理的解答,谢谢.
------解决方案--------------------貌似hibernate的解析是以最后一次为准,就是
<many-to-one name= "bookInfo " class= "com.resoft.bms.tsgl.domain.BookInfo " column= "data_id " insert= "false " update= "false ">
</many-to-one>
前面的都被覆盖了
而且hibernate的电子档也没有这种关联关系的范例。应该是不能关联吧
------解决方案--------------------关注。。。帮顶~
------解决方案--------------------hibernate不限制在一条select语句中多对一连接的数目
------解决方案--------------------把数据库中的外键去了,没有外键难道表之间就没有关系吗???数据库中的外键往往还会带来很多麻烦,所以表之间的关系由POJO来关联......
你上面写的那些对应关系有点问题,sysstat是总表,它里面可以有多个不同或相同的book_info,article_info,consultation_info,所以sysstat与那三个表的对应关系是三个 <one-to-many> ,而不是 <many-to-one> ,而且你那sysstat的主键设得也有点问题~~~
自己再多动动脑想想看吧~~~