一般情况:第一个表代表一个端,第二个表代表多个端。第三个表充当两者之间的链接。
我的情况:第一张表和第二张表是一样的。第三个表用作所有具有一对多关系的表对之间的链接。第三个表有附加字段(字符串),其中包含有关 2 个表的信息。
小例子。假设我们有表 Project 和 Category(一个类别 --> 许多项目)。要获得所有类别的项目,我们需要执行下一个查询:
select project.name, category.name
from nodeassociation, project, category
where nodeassociation.association_name='ProjectCategory'
and nodeassociation.source_id=project.id
and nodeassociation.sink_id=category.id
如何通过 JPA 指定 association_name 标准?
UPD:如果 JPA 不可能,但 hibernate 可以处理它,那么没关系,什么是 hibernate 解决方案?
最佳答案
建议您在根据association_name
列过滤的数据库中创建多个 View ,然后根据这些在您的映射中定义多对多关系,并强制执行一对多语义在你的代码中。这种使用中间表的情况只能在 Hibernate 中使用多对多映射真正处理。
关于java - 关联表是one for all的一对多关系,如何实现一对多映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1999773/