java - 如何处理具有附加列的多对多链接表

标签 java orm jpa eclipselink

假设以下示例性数据库设计:

USERS
-----------------
ID
NAME


ROLES
-----------------
ID
NAME


USERS_ROLES
-----------------
FK_USER_ID
FK_ROLE_ID
LOGIN
PASSWD

我使用 xml 将此关系与 eclipse-link 映射。 用户:

<many-to-many name="roles" mapped-by="users">
  <join-table name="USERS_ROLES">
    <join-column name="USER_ID" />
    <inverse-join-column name="ROLE_ID" />
  </join-table>
</many-to-many>

为了完整起见,对应的角色映射:

<many-to-many name="users" mapped-by="roles">
  <join-table name="USERS_ROLES">
    <join-column name="FK_ROLE_ID" />
    <inverse-join-column name="FK_USER_ID" />
  </join-table>
</many-to-many>

现在我还可以为链接表创建映射,但是我必须做什么才能访问链接表的属性(映射到 java 对象/类)? 如果用户登录、选择他们感兴趣的角色并输入相应的密码,我就需要它。当然,在当前设置下,我可以获得用户分配到的所有角色,反之亦然,但我无法与登录数据或与用户和角色关系相对应的任何其他属性进行比较。 简而言之:我不知道如何访问链接表的属性,也不知道如何在映射 xml 中映射它。

提前谢谢!

最佳答案

但它不是 M-N。它是 2 个 1-N 的中间类(包含登录名和密码)。

关于java - 如何处理具有附加列的多对多链接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2802710/

相关文章:

php - 从 Doctrine 查询响应数组中选择一个实体

java - 如何使用 SpringBoot 使用 Spring Data JPA 和 MYSQas DB 创建一个简单的 CRUD 应用程序?

java - DROOLS:根据 >、< 或 = 创建条件很容易,但是我们如何为人类可读的规则创建条件呢?

java - 在 MySQL 数据库中检索非英文字符插入值

java - 什么时候应该在 JPA 中使用 @JoinColumn 或 @JoinTable?

architecture - ZF2 Skeleton 和 Doctrine ORM xml 模式合并

c# - 依赖注入(inject)进一步深入 "chain"

java - 异步 Servlet 是否允许更大的并发性?

java - Hibernate JPA 和 Spring javax.persistence.TransactionRequiredException : no transaction is in progress (2)

java - "detached entity passed to persist error"与 JPA/EJB 代码