java如何在多对一关系中更改foreignkey而不获取它
假设我们在hibernate中有多对一关系图书实体只能有一位作者,而一位作者可以有许多图书
图书实体:
@Entity
@Table(name ="books")
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
@ManyToOne
private Author author;
}
作者实体:
@Entity
@Table(name = "authors")
public class Author {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(mappedBy = "author")
private List<Book> books;
public void addBook(Book book){
if (books == null)
books = new ArrayList<Book>();
books.add(book);
book.setAuthor(this);
}
}
在第1课时,我坚持写一些书和作者。现在,每本书都有作者的FK,课程结束。现在,在一个新的会话中,我想更改一本书的PK,而不去拿那本书。我知道这本书的id,我只想把它的FK更新给另一位作者。比如:
Author getAuthor = session2.get(Author.class, 1L);
Book tmpBook = new Book();
tmpBook.setId(2L);
tmpBook.setAuthor(getAuthor);
session2.update(tmpBook);
但在这种情况下,hibernate会将book的所有其他列更新为NULL。这不是我想要的。我不想先去拿书,然后再换它的主键。这个问题有什么解决办法吗
提前谢谢
共 (0) 个答案