首页 > 解决方案 > 尝试在java中使用方法时出现异常

问题描述

大家好,我想在长时间的休息后重新开始编码,但我遇到了一些问题。我正在构建一个程序,它有一个用户上传的书籍库(不是真的上传任何东西)并且我遇到了一个

Exception in thread "main" java.lang.NullPointerException
    at Library.beans.User.uploadBook(User.java:107)
    at Library.LibraryApplication.main(LibraryApplication.java:22)

当我试图通过用户添加一本新书时。我正在使用弹簧顺便说一句。

编码片段

User bean
@Entity
@Table(name = "Users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    @Column(nullable = false, unique = true)
    private String email;
    @Column(nullable = false)
    private String password;
    @Column(nullable = false, unique = true)
    private String userName;
//  ** Books added to a user private library **
    @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    private List<Book> userLibrary;
//  ** Books uploaded by user **
    @OneToMany(cascade = CascadeType.ALL)
    private List<Book> userBooks;

    public User(String email, String password, String name) {
        super();
        this.email = email;
        this.password = password;
        this.userName = name;
    }
public void uploadBook(Book book) {
        this.userBooks.add(book);
    }

书豆

@Entity
@Table(name = "Books")
public class Book {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    @Column(nullable = false)
    private String name;
    @Column(nullable = false)
    private String synopsis;
    @Column
    private String image;
    @Column
    private double rating;
    @Column
    private GenreType genre;
    @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    private User author;
    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    private List<Review> reviews;

导致异常的main中的代码

用户 user = new User("admin", "admin", "user1");

user.uploadBook(new Book("book1", "a", "b", GenreType.Action));

额外说明 如果我通过(预订新书)在用户之外创建一本书并将作者添加到 ctr 它以一种方式工作,这本书将声明其作者是我在创建时输入的“用户”,但同一个“用户”不会把它列在他上传的书单下。我在这里想念什么?

标签: java

解决方案


你必须private List<Book> userBooks;在你的Userbean中初始化

您的列表对象为 null ,这会导致NullPointerException您将对象添加到此列表中。

这应该可以解决您的问题:

private List<Book> userBooks = new ArrayList();

推荐阅读