java - 关联表是one for all的一对多关系,如何实现一对多映射?

标签 java hibernate orm jpa

一般情况:第一个表代表一个端,第二个表代表多个端。第三个表充当两者之间的链接。

我的情况:第一张表和第二张表是一样的。第三个表用作所有具有一对多关系的表对之间的链接。第三个表有附加字段(字符串),其中包含有关 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/

相关文章:

java - Microsoft Azure IoT 中心 (java) 发送消息后通知 "Lost connection to the server. Reconnecting 0 time."

hibernate - 如何在 Spring Data JPA 中使用多个 JPA 持久性上下文?

symfony - Doctrine2 [语义错误] 找不到常量?

mysql - 简单的 hibernate 不起作用,但级联查询可以

grails - 如何在Grails中映射此现有数据库?

Java Applet 未在浏览器中运行

java - 'yum install java-1.8.0' 是某种别名吗?

java - 64 位操作系统上的 32 位 Java : is there a limit to number of JVMs?

java - Hibernate缓存问题?

java - hibernate 4 : Why i am getting the AnnotationException : Unknown mappedBy?