java - 尝试在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 它以一种方式工作,这本书将声明其作者是我在创建时输入的“用户”,但同一个“用户”不会把它列在他上传的书单下。我在这里想念什么?
解决方案
你必须private List<Book> userBooks;
在你的User
bean中初始化
您的列表对象为 null ,这会导致NullPointerException
您将对象添加到此列表中。
这应该可以解决您的问题:
private List<Book> userBooks = new ArrayList();
推荐阅读
- android - 如何将字符串日期解析为其他时区的其他日期
- r - 如何以双射方式对称 [0,1]^d 中的数据集
- swift - 无法为特定设备自定义 UITableViewCell
- android - (Android) 在 Xamarin Forms 3.3 上更改模块时总是显示启动画面?
- java - Lombok 的 @NonNull 在验证期间干扰 javax.validation.constraints.NotNull
- asp.net - 回收应用程序池时多次出现signalr 400错误
- ios - UNNotification 的重复间隔
- javascript - 错误:ID 为“$sysregistries”的集合中 ID 为“Participant:01”的对象不存在
- javascript - JavaScript:函数与变量
- google-apps-script - 如何使用 Google Apps 脚本将文件夹从 MyDrive 复制到 TeamDrive?