gpt4 book ai didi

java - JPA 保留具有外键值的实体,但不想显式查找外键实体

转载 作者:太空宇宙 更新时间:2023-11-04 13:24:58 24 4
gpt4 key购买 nike

我想保留一个与其他实体 Author 具有 ManyToOne 关系的实体 Book

  @Entity
@Table(name = "BOOK")
public class Book {
private int id;
private Author author;

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "AUTHOR_ID")
public Author getAuthor() {
return author;
}
}

所以,当我想保存 Book 实体时,我需要使用查找 Author 实体

Author aut = entityManager.find(Author.class, Id); 
book.setAuthor(aut);
em.merge(book)

因此,为了查找作者,我需要显式发出一个我不想执行的 SELECT 查询。有没有其他方法可以避免显式查找外键,但可以保留具有外键值的实体?

谢谢

最佳答案

您可以选择使用 JPQL 吗?您只需使用简单的查询即可

UPDATE Book b SET b.author=(SELECT a FROM Author a WHERE a.id=:author_id) WHERE b.id=:book_id

执行此操作的另一种方法如下:

Author reference = entityManager.getReference(Author.class,authorId);
book.setAuthor(reference);
entityManager.merge(book);

有关 getReference 的更多信息方法

这样选择将不会被发出。

关于java - JPA 保留具有外键值的实体,但不想显式查找外键实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32753287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com