java 实体类 代码重复_java – JPA两个单向@OneToMany关系到同一个实体导致重复输入...
我目前正在开展一个学校项目,我们必须创建自己的“Twitter”应用程序,并且我在域对象的持久性方面遇到了一些麻烦.
我的帐户类(为便于阅读而简化):
@Entity
public class Account implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@Column(unique = true)
private String email;
@OneToMany
private final List following = new ArrayList<>();
@OneToMany(mappedBy = "tweetedBy", cascade = ALL)
private final List tweets = new ArrayList<>();
我的推文类(为便于阅读而简化):
@Entity
public class Tweet implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
private String content;
@ManyToOne
private Account tweetedBy;
@OneToMany(cascade = CascadeType.PERSIST)
@JoinTable(name = "tweet_likes")
private final List likedBy = new ArrayList<>();
@OneToMany(cascade = CascadeType.PERSIST)
@JoinTable(name = "tweet_mentions")
private final List mentions = new ArrayList<>();
持久代码(简化):
Account a1 = new Account("user1@gmail.com", "password1");
Account a2 = new Account("user2@gmail.com", "password2");
Account a3 = new Account("user3@gmail.com", "password3");
a1.addTweet("Sup mah dudes.");
a1.addTweet("yoyo");
a2.addTweet("Allo Allo #tweeting");
a2.addTweet("#testing yoyo");
a1.getTweets().get(0).addLike(a3);
a1.addFollowing(a3);
em.persist(a1);
em.persist(a2);
em.persist(a3);
我遇到的问题是,LikeBy和提及没有正确持久化.正在生成链接器表并插入数据,但我在插入用户时不断出现重复的条目错误.我相信我正确地建立了关系(单向OneToMany),因为我不希望帐户跟踪它所提到的推文.
我尝试过的:
> @JoinColumn用于喜欢和提及(导致重复插入)
>对于喜欢和提及的@JoinTable(导致重复插入)
>只有@OneToMany用于喜欢和提及(这不会导致错误,但会为两个关系创建一个链接器表,其中任何一个都不能为null)
> @OneToMany for likes,然后@joinColumn提及nullable = true(这导致你不能在推文中提及你的情况,除非你喜欢它,这是奇怪的行为)
> @OneToMany(cascade = CascadeType.MERGE)(导致重复插入)
Netbeans输出的重复插入错误:
Warning: Local Exception Stack:
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.4.qualifier): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'user6@gmail.com' for key 'EMAIL'
Error Code: 1062
Call: INSERT INTO ACCOUNT (AVATARPATH, BIO, EMAIL, ENCRYPTEDPASSWORD, LOCATION, USERNAME, USERROLE, WEBSITE) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
bind => [8 parameters bound]
Query: InsertObjectQuery(domain.Account@3c7f9d54)
我相信这个错误的发生是因为我的JPA imlementation的流程如下:
>帐户持续存在
>推文持续存在(因为它在账户内)
>帐户持续存在(因为它在Tweet内)< - 重复条目
我期待的是:
> 1个链接表,其中包含tweet_id(fk)和表示喜欢的account_id(fk)
> 1个链接表,其中包含tweet_id(fk)和表示提及的account_id(fk)
如果有人可以帮我解释注释或者解释我做错了什么,那将非常感激.
Ty提前获得任何帮助.
java 实体类 代码重复_java – JPA两个单向@OneToMany关系到同一个实体导致重复输入...相关推荐
- c++ ea 代码 生成_EA生成实体类代码
引言 在做机房个人版重构的时候,就听说了EA是一个强大的软件.仅仅只是知道的时候,已经画完了图,没有怎么用EA其它的功能,所以一直没有见识过罢了.如今到了机房合作了,想到EA一定要好好用,这样能省不少 ...
- java实体类怎么写_Java中(entity)实体类的书写规范
在日常的Java项目开发中,entity(实体类)是必不可少的,它们一般都有很多的属性,并有相应的setter和getter方法.entity(实体类)的作用一般是和数据表做映射.所以快速写出规范的e ...
- java电脑类的接口_java 一个类实现两个接口的案例
直接用英文逗号分隔就可以了,比如:? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 inerface IHello { String sayHello ...
- java实体类实现抽象类_java接口、抽象类、实体类关系介绍
接口:接口是一个引用类型,与类相似,不过在接口中只能包含常量,方法名和嵌套类型.没有构造器,所以不能被实例化只能被类所实现或者被另外的接口所继承.在接口中声明的方法没有方法体. 抽象类:将类层次中共有 ...
- java实体类命名规范_java实现周易起名-java实体类起名规范
Java中类的命名规范? java命名规范? Camel-Case(Camel-Case)是编写计算机程序时的一组命名规则(惯例). 程序员能够更轻松地与同行交流自己的代码,因此最好采用具有更好可读性 ...
- java建立类的思想_JAVA类和对象创建
面向对象 学习目标: 理解面向对象的编程思想 理解类与对象的关系 如何创建类与对象 方法重载 一:什么是面向对象编程(OOP) 面向对象编程(Object Oriented Programming,O ...
- java流类图结构_java I/O 流总结
一.java 流操作有关的类和接口: 类 说明 Fil ...
- java流类图结构_java学习之IO流(学习之旅,一)
个人在学习IO流的时候看到如下所示java 流类图结构的时候,我的感想是,这么多··处于蒙的状态. Java流类图结构 这么多,没有分类不好学,那我们就慢慢一口一口的吃,这样每天学习一点就好了,其实很 ...
- java uml类图教程_Java利器之UML类图详解
原标题:Java利器之UML类图详解 (点击上方公众号,可快速关注) 来源:伯乐在线专栏作者- Code4Android 如需转载,发送「转载」二字查看说明 前言 UML(Unified Modeli ...
最新文章
- mysql view 能和表关联吗_MySQL 事务隔离及实现,赶快码上收藏!满满干货
- 智源论坛报名丨斯坦福大学马腾宇博士:为深度模型设计显示正则器
- 16年寒假随笔(2)
- bat脚本中获取上级目录_使用Python写一个可以监控Tomcat 运行的脚本,并且把.py文件转换成.exe文件...
- 在计算机管理中创建不同的用户,为什么在计算机管理员里创建密码密码总是不符合要求...
- 如何识别一个人是web前端程序员
- 使用CCDirector的notificationNode来创建独立的信息提示层
- node createConnection connect 区别?
- ubuntu mysql双主热备配置_mysql学习:mysql双主热备+lvs+keepalived配置
- 2021年CFA全套资料无偿分享|备考经验|备考计划
- 论文解读:基于图神经网络与蛋白质接触图的药靶亲和力预测(一)2021SC@SDUSC
- HR面试问题-你的缺点是什么?
- untiy Resorces目录动态加载资源
- HTML网页表格标签,HTML静态网页(标签、表格)
- RHCE怎么报名?需要什么条件?
- BM27 按之字形顺序打印二叉树
- Unix/Linux编程:getcontext、setcontext
- 爱看网的内存占用情况
- 2.3Linux常用命令
- IT傻博士-CCNA课程在线视频(1-5)
热门文章
- 鲜为人知的混沌工程,到底哪里好?
- LC3视角:Kubernetes下日志采集、存储与处理技术实践
- 什么是Docker?看这一篇文章就够了
- NVIDIA向交通运输行业开源其自动驾驶汽车深度神经网络
- mi6 android版本,小米6:我依旧是王,MIUI10.4.2稳定版与AndroidP同时到来
- python封装c接口_用C为python3.1封装mysql接口(一)
- linux使用ping命令ping本机,Linux下使用ping命令判断网络的好坏
- Seata 单机环境搭建_01
- SprinBoot 集成 Flowable 工作流引擎镜像制作
- 安装和使用Ant Design Vue 图标库