有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案