java – JPA:两个实体之间的多对多关系?
发布时间:2020-12-15 03:16:04 所属栏目:Java 来源:网络整理
导读:我有两个实体类’User’和’Document’.每个用户都有一个收件箱和一个发件箱,实际上是两个列表,每个文档可能驻留在多个收件箱和发件箱的用户中.这是我的课程: @Entitypublic class User { @Id private Long id; @ManyToMany(mappedBy = "userinbox",cascade
我有两个实体类’User’和’Document’.每个用户都有一个收件箱和一个发件箱,实际上是两个列表,每个文档可能驻留在多个收件箱和发件箱的用户中.这是我的课程:
@Entity public class User { @Id private Long id; @ManyToMany(mappedBy = "userinbox",cascade=CascadeType.ALL) private List<Document> inbox = new ArrayList<Document>(); @ManyToMany(mappedBy = "useroutbox",cascade=CascadeType.ALL) private List<Document> outbox = new ArrayList<Document>(); } @Entity public class Document { @Id private Long id; @ManyToMany(cascade=CascadeType.ALL) private List<User> userinbox = new ArrayList<User>(); @ManyToMany(cascade=CascadeType.ALL) private List<User> useroutbox = new ArrayList<User>(); } 当我运行该程序并尝试将文档分配给用户的收件箱(反之亦然)时,我收到以下错误: Error Code: 1364 Call: INSERT INTO DOCUMENT_USER (userinbox_ID,inbox_ID) VALUES (?,?) bind => [2 parameters bound] Internal Exception: java.sql.SQLException: Field 'useroutbox_ID' doesn't have a default value Query: DataModifyQuery(name="userinbox" sql="INSERT INTO DOCUMENT_USER (userinbox_ID,?)") 生成的关联表如下所示: DOCUMENT_USER useroutbox_ID | outbox_ID |userinbox_ID | inbox_ID 如何为这种多对多关系分配默认值?制作两个关联表会更好吗?>一个用于收件箱关系,另一个用于收件箱关系?我怎么做到这一点?解决这个问题的其他方法? 任何帮助高度赞赏 – 非常感谢提前! 解决方法
我认为更好的选择是有两个单独的表,每个关系一个.因为实际上两个不同实体之间有两个关系,而不是一个与四个不同实体的关系.
因此,您应该为Document侧的每个属性添加@JoinTable注释,因为User侧将这些关系映射到属性.类似于以下内容: @Entity public class Document { @Id private Long id; @ManyToMany(cascade=CascadeType.ALL) @JoinTable(name = "document_inbox",joinColumns = @JoinColumn(name = "userinbox_id"),inverseJoinColumns = @JoinColumn(name = "inbox_id")) private List<User> userinbox = new ArrayList<User>(); @ManyToMany(cascade=CascadeType.ALL) @JoinTable(name = "document_outbox",joinColumns = @JoinColumn(name = "useroutbox_id"),inverseJoinColumns = @JoinColumn(name = "outbox_id")) private List<User> useroutbox = new ArrayList<User>(); } 保持现在的另一个实体.希望这可以帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – 具有“user.dir”系统属性的相对文件路径
- java – 以编程方式在springboot中设置hibernate.ddl-auto
- java – Eclipse不再启动
- 使用java stream获取arrayList中min size列表的索引
- dart – 对象的默认stringify,相当于Java的toString?
- java – 我应该在hadoop上的每个动作之前调用ugi.checkTGTA
- java – Intermec打印机中的DP命令问题
- syso语句在Java中意味着什么?
- springboot整合Quartz实现动态配置定时任务的方法
- Java设计模式之命令模式(Command模式)介绍