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提前获得任何帮助.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring精华问答 | 什么是YAML?

Spring框架是一个开源的Java平台,它提供了非常容易,非常迅速地开发健壮的Java应用程序的全面的基础设施支持。今天就让我们一起来看看关于Spring的精华问答吧。1Q&#xff1a;如何在自定义端口上运行Spring Boot应用程序&#xff1f;A&#xff1a;为了在自定义端口上运行Spring…

Sublime Test3 添加一键格式化XML文件插件

文章目录1. 下载地址&#xff1a;2. 快捷键&#xff1a;3. 在线格式化xml json插件1. 下载地址&#xff1a; 下载链接提取码https://pan.baidu.com/s/1zovLp4BCJmreAYe83EionAq0vq 2. 快捷键&#xff1a; 快捷键说明CtrlL选择整行&#xff08;按住-继续选择下行&#xff09;C…

java获得jsp的name注解_记录Java注解在JavaWeb中的一个应用实例

概述在学习注解的时候&#xff0c;学了个懵懵懂懂。学了JavaWeb之后&#xff0c;在做Demo项目的过程中&#xff0c;借助注解和反射实现了对页面按钮的权限控制&#xff0c;对于注解才算咂摸出了点味儿来。需求以"角色列表"页面为例&#xff0c;该页面包含"新建&…

企业实战_03_MyCat下载、安装、启动

接上一篇&#xff1a;企业实战_02_MyCat基本元素 https://gblfy.blog.csdn.net/article/details/118770154 Mycat是一个广受好评的数据库中间件&#xff0c;主要应用场景&#xff1a;主从复制、读写分离、垂直拆分、水平扩展、热备、分表分库等。 前言&#xff1a; MyCat基于jd…

微服务的历史与陷阱

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 李运华出品 | 技术琐话微服务是近几年非常火热的架构设计理念&#xff0c;大部分人认为是MartinFlower提出了微服务概念&#xff0c;但事实上微服务概念的历史要早得多&#xff0c;也不是Martin Flower创造出来的&#xff0c…

mysqldump备份报Binlogging on server not active的解决

文章目录1. 问题现象2. 解决方案1. 问题现象 Redhat 6.5 X64 Mysql 5.7执行备份: [rootmaster 3306]# mysqldump -u root -p --master-data2 --single-transaction -R --triggers -A > all.sql Enter password: mysqldump: Error: Binlogging on server not active2. 解决…

java加锁多线程改为单线程_GUI为什么不设计为多线程(用户事件和底层事件的流程是相反的,每层都加锁效率太低,共用一把锁那就是单线程)...

在我们这批新人转正评审的时候&#xff0c;我师父问了我的小伙伴一个问题&#xff1a;为什么一些更新界面的方法只能在主线程中调用&#xff1f;师父没有问我这个问题&#xff0c;让知其然但不知其所以然的我有种侥幸逃过一难的心情。我想如果回答那是因为Android GUI库是单线程…

行啊,人工智能玩大了!

戳蓝字“CSDN云计算”关注我们哦&#xff01;是的 &#xff0c;你没猜错&#xff01;就是人工智能&#xff01;AI的炽手可热程度和重要性无需多提。最近&#xff0c;笔者在网上发现了一个报告&#xff0c;报告名字&#xff1a;《BAT人工智能领域人才发展报告》&#xff0c;发现…

Slave is not configured or failed to initialize properly. You must at least set --server-id

一、如果版本不一样请执行以下操作&#xff1a; MySQL 跨版本主从复制时报错&#xff1a;ERROR 1794 (HY000): Slave is not configured or failed to initialize properly. 背景&#xff1a; zabbix 数据库迁移&#xff0c;搭建主从&#xff0c;主是5.6.25&#xff0c;从是5.…

java xml注入bean_Spring实战之通过XML装配bean

尽管Spring长期以来确实与XML有着关联&#xff0c;但现在需要明确的是&#xff0c;XML不再是配置Spring的唯一可选方案。Spring现在有了强大的自动化配置和基于Java的配置&#xff0c;XML不应该再是你的第一选择了。不过&#xff0c;鉴于已经存在那么多基于XML的Spring配置&…

Docker 存储选型,这些年我们遇到的坑

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;随着Docker 容器技术的不断发展和业内对Docker 的使用不断深入&#xff0c;大家已经不…

mysql主从复制之异常解决--- Slave_IO_Running: NO

关于 Slave_IO_Running: NO 的错误其实有很多原因&#xff0c; 文章目录1. 解决问题的思路2. 异常信息3. 问题定位&#xff1a;由于uuid相同&#xff0c;而导致触发此异常4. 解决方案5. 服务器背景6. 具体解决方案7. 重新启动mysql8. 登录mysql&#xff0c;重启slave&#xff0…

企业实战_11_MyCat垂直拆分相关配置

接上一篇&#xff1a;企业实战_10_MyCat Mysql 主复制总结 https://gblfy.blog.csdn.net/article/details/118652742 文章目录一、准备工作1. 实现思路2. 配置MyCat垂直分库3. 环境配置4. 在master节点创建mycat用户5. 赋予操作数据库权限二、schema.xml文件配置2.1. 基础模板 …

K8S精华问答 | 如何监控部署在Docker容器上的应用程序?

kubernetes&#xff0c;简称K8S&#xff0c;是用8代替8个字符“ubernete”而成的缩写。是一个开源的&#xff0c;用于管理云平台中多个主机上的容器化的应用&#xff0c;Kubernetes的目标是让部署容器化的应用简单并且高效&#xff08;powerful&#xff09;,Kubernetes提供了应…

java403forbidden_java – Spring boot – 返回403 Forbidden而不是重定向到登录页面

在Spring Boot Web应用程序中,我有以下安全配置&#xff1a;Overridepublic void configure(HttpSecurity http) throws Exception {// formatter:offhttp.headers().frameOptions().disable().and().antMatcher("/**").authorizeRequests().antMatchers("/actu…

带你全面了解Http和Https

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者: 左大人 | 来源 公众号 程序员小乐来源&#xff1a;jianshu.com/p/27862635c07700 前言 Http和Https属于计算机网络范畴&#xff0c;但作为开发人员&#xff0c;不管是后台开发或是前台开发&#xff0c;都很有必要掌握它们。在…

企业实战_05_MyCat用户密码加密

接上一篇:企业实战_04_MyCat常用配置文件详解 https://gblfy.blog.csdn.net/article/details/100112080 文章目录1. 加密简述2. 加密目录3. 执行加密4. 添加加密属性5. 添加密文6. 测试是否可用声明&#xff1a;需要提前安装mysql Linux centos7 安装 MySQL5.7.x 1. 加密简述 …

java+多线程菜鸟_java多线程

线程概念、线程与进程的区别、线程的运行状态参考《计算机操作系统》&#xff0c;本文仅关注于java的多线程开发方法。1&#xff1a;java程序中进行多进程调度的两种方法&#xff1a;使用runtime类&#xff0c;使用processBuilder类java中实现一个线程的两种方法&#xff1a;a)…

ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘192.168.1.165‘ (113)

登录mycat服务器&#xff0c;关闭防火墙即可 # centos7 systemctl stop firewalld# centos6 service iptables stop

大数据从哪里来?| 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;Feng来源&#xff1a;哈尔的数据城堡现代商业市场是一个数据驱动的环境&#xff0c;可以说不论技术怎么更新换代&#xff0c;数据都有着不可替代的地位&#xff0c;而且抛开数据谈大数据服务就是瞎扯&#xff0c;没…