Hibernate,从不同的表到一般表的一对多

时间:2014-01-18 15:39:25

标签: java mysql hibernate

美好的一天。

存在三个表(测试):

User (id, user_name)
Object(id, object_name)
Property(id, property_value)

用户,对象包含属性,所以我想使用特殊的表EntityProperties(entity_id,entity_type,property_id),其中entity_id - 来自User或Object的id,以及entity_type - user或object(表用户,对象的参数) )。

我可以使用Hibernate 4实现它吗?如果是,请建议注释以及如何更好地进行注释。

谢谢, 奥列格

2 个答案:

答案 0 :(得分:0)

如果User也是一个Object,那么可以通过创建User extends Object来完成,然后问题就变成了映射继承,您可以阅读更多关于here

的内容

如果这是从User到Property以及从Object到property的单向关系,那么我认为它可以通过常规映射(一对多)实现,然后不需要entity_type列,因为你只会用一个entity_id查询Property表。这样,User对象将具有字段Set<Property> properties;,并且对于Object类也是如此。

答案 1 :(得分:0)

您可以创建一个映射的超类EntityPropertyMap,它具有一个属性对象,并具有每个类层次结构策略的表的具体实现(UserPropertyMap和ObjectPropertyMap)。可以找到示例http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/inheritance.htmlhttp://viralpatel.net/blogs/hibernate-inheritence-table-per-hierarchy-mapping/