java - 如何进行 Hibernate XML 映射,一对多使用 1 PK 映射到具有复合键的另一个实体

标签 java hibernate nhibernate-mapping hibernate-mapping

我在尝试将一个实体映射到另一个具有 Composite-PK 的实体时遇到了一个大问题... 我在这里想要实现的是,1 个用户可以有多个任务,每个任务包含许多模块及其操作

|用户 | (用户 ID,名称)
|用户权利 | (用户 ID任务 ID)
|任务| (任务 ID模块 ID操作 ID)
|行动| (ActionId,ActionName)
|模块| (模块 ID,模块名称)

在我的 User.hbm.xml 中
<set name="tasklist" table="UserRight" cascade="all"> <key column="user_id" /> <many-to-many column="task_id" unique="true"class="kodi.model.UserRights.Task" /> </set>

我收到此错误

SEVERE: Initial SessionFactory creation failed.org.hibernate.MappingException: Foreign key  (FK8AF2ACF15756F47C:UserRight [task_id])) must have same number of columns as the referenced primary key (task [task_id,submodule_id,action_id])
WARNING: StandardWrapperValve[default]: PWC1406: Servlet.service() for servlet default threw exception
java.lang.ExceptionInInitializerError
    at kodi.gen.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:23)
    at kodi.gen.util.HibernateUtil.<clinit>(HibernateUtil.java:14)
    at kodi.view.LoginAction.<init>(LoginAction.java:22)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at java.lang.Class.newInstance0(Class.java:355)
    at java.lang.Class.newInstance(Class.java:308)

我知道问题是因为,我试图只使用 1 个属性来映射到具有 3 个属性的集合,但我真的不知道如何解决它。

有人可以帮忙吗?

最佳答案

最简单、最好的方法是使taskid唯一并将其映射为id。

如果不行你可以尝试<many-to-many property-ref="TaskId"/><many-to-many property-ref="Id"/>

关于java - 如何进行 Hibernate XML 映射,一对多使用 1 PK 映射到具有复合键的另一个实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8799724/

相关文章:

java - 使用 CDI 在简单的 java 程序中进行依赖注入(inject)

java - 旋转屏幕与在 Activity 上调用 finish() 方法

java - 多个分片数据库 Hibernate 事务

java - 即时时间戳与 Spring Boot 3 结合 PostgreSQL 失败

java - 在 uniqueResult() 之前使用 setMaxResults(1) 进行 hibernate 优化?

java - 管理任务组的设计模式

Java 游戏区难度

c# - 保护/省略 NHibernate 中域实体的选定属性(子类、投影、?)

visual-studio-2008 - nHibernate 和 sqlite 映射

nhibernate - 如何在(流畅)NHibernate 中添加只读集合属性?