美好的一天。
存在三个表(测试):
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实现它吗?如果是,请建议注释以及如何更好地进行注释。
谢谢, 奥列格
答案 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.html和http://viralpatel.net/blogs/hibernate-inheritence-table-per-hierarchy-mapping/