java - 用休眠保存
问题描述
我是hibernate的新手,正在尝试使用它。但是,我面临一个小问题。所以我有一种按摩应用程序,用户可以在这里互相发送消息。这是用户和按摩类:
@Entity(name = "userPojo")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String firstName;
private String lastName;
@Column(unique = true)
private String username;
private String password;
@OneToMany(cascade = CascadeType.REMOVE)
@JoinTable(name = "user_messages")
@LazyCollection(LazyCollectionOption.FALSE)
private final List<Message> messages = new LinkedList<>();
// constructor and getters&setters
}
@Entity
public class Message {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int ID;
private String message;
private String dateTime;
@ManyToOne
private User sender;
// constructor and getters&setters
}
现在,如果消息的发件人想要删除他的一条消息,我将面临此异常:
Caused by: org.postgresql.util.PSQLException: ERROR: update or delete on table "message" violates foreign key constraint "fkdqkq2exjkook6o3vx26kxnnya" on table "user_messages"
Detail: Key (id)=(2) is still referenced from table "user_messages".
感谢您帮助解决此错误
解决方案
我相信您面临的是映射问题,您是说一条消息应该有多个用户而不是属于一个用户?尝试的一些替代方法是从 Message 中删除 ManyToOne 或使用“mappedBy”注释属性来指定此时未知的关系所有者(Message x User)。之后,从父母的集合中删除所需的项目+保存应该可以解决问题。
推荐阅读
- apache-kafka - 如何使用spring boot在kafka中将文件从生产者发送到消费者?
- python - PDF 矿工,坏新行检测
- html - HTML以错误的顺序显示特殊字符
- python - 如何交互从数据库接收的数据?
- regex - Clojure RegEx:如何在正则表达式中嵌入注释?
- java - 如何在swing(核心java)中将dd-mmm-yyyy格式转换为dd-mm-yyyy格式?
- python - 如何加入两个 Spark DataFrame 并操作它们的 share 列?
- javascript - Highchart 的错误:Uncaught SyntaxError: Unexpected token for
- angular - 如何从 prod build Angular 的 ngx-build-plus 中排除 Devextreme?
- node.js - 我收到一个在 npm install 期间停止的错误