这3张表应该使用 hibernate的哪种mapping?

lyojbuilder
06-08-13 1 219

一个user表,一个 article表,一个 picture表,user和 article的图片都保存到picture表中,picture中有两个外键,一个指向 user,一个指向article,还有一个类型标识这个图片是代表user的还是article的。
开始想建立两个一对多的关系,就是 user-picture:one-to-many. user-article:one-to-many. 但是这样 picture中总是保留一个多余的id属性,例如picture代表的是user的图片,那默这时候他的article_id外键就是多余的。怎样去掉这种情况呢? 如果用两张表分别保存user的图片和article的图片就不会有这种问题。 但是我不想用两张表,hibernate哪一种mapping能解决这个问题?就是当图片类型是 user 的时候,picture表的article_id就不映射,如果图片类型是article的时候,picture表的 user_id就不映射,用 formula可以做到么?

banq
2006-08-14 18:55

你这就是典型的O/R 不匹配问题。

数据表结构和对象结构两个硬放在一起,发生拥挤现象,当然你的配置很难挤出来,白白浪费脑细胞。

巧妙方式:放开一头,数据表结构不要确定,确定对象结构,这样,配置文件好配一些,数据表结构是一个结果,对象结构+配置=数据表结构。