gpt4 book ai didi

java - 实体对象持久化时出现空指针异常

转载 作者:太空宇宙 更新时间:2023-11-04 14:20:06 26 4
gpt4 key购买 nike

我正在尝试将实体对象存储到数据库中。但我的问题是当实体对象被持久化时,它会抛出空指针异常。

下面是我的实体类

@Entity
@Table(name = "BOOK")
@XmlRootElement
@NamedQueries({

@NamedQuery(name = "Book.findAll", query = "SELECT b FROM Book b"),
@NamedQuery(name = "Book.findByBookid", query = "SELECT b FROM Book b WHERE b.bookid = :bookid"),
@NamedQuery(name = "Book.findByBookname", query = "SELECT b FROM Book b WHERE b.bookname = :bookname"),
@NamedQuery(name = "Book.findByBookdesc", query = "SELECT b FROM Book b WHERE b.bookdesc = :bookdesc"),
@NamedQuery(name = "Book.findByBookprice", query = "SELECT b FROM Book b WHERE b.bookprice = :bookprice"), })


public class Book implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 5)
@Column(name = "BOOKID")
private String bookid;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 200)
@Column(name = "BOOKNAME")
private String bookname;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 200)
@Column(name = "BOOKDESC")
private String bookdesc;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 200)
@Column(name = "BOOKPRICE")
private String bookprice;

...其余方法

在下面的代码中,它提交执行事务,但随后抛出空指针异常错误。

@Stateless

public class BookFacade extends AbstractFacade<Book> implements BookFacadeLocal {
@PersistenceContext(unitName = "BookStore-ejbPU")
private EntityManager em;
@Override
protected EntityManager getEntityManager() {
return em;
}

public BookFacade() {
super(Book.class);
}

@Override
public void create(Book book)
{

em.getTransaction().begin();
em.persist(book);
em.getTransaction().commit();
}

}

下面是出现空指针错误的屏幕截图。 (玻璃鱼原木)

enter image description here

如上图所示,当调用 create 方法时,会抛出 null ponter 异常。我猜这个异常是从实体管理器抛出的。我正在从 servlet 调用 create 方法,但我没有显示代码。

我是使用 JPA、ejb 和 session bean 的新手,所以不太清楚错误。如果您想查看更多程序代码来修复错误,请在下面评论。

感谢您的宝贵时间。

编辑:

下面是 persistence.xml 文件的屏幕截图

enter image description here

persistence.xml 文件的源 View

enter image description here

最佳答案

你的 BookFaçade 类似乎被缩短了,#create(...) 方法不在第 36 行。

我猜你的 NullPointerException 是在访问 EntityManager 时发生的。也许您的问题类似于this one 。这和你的环境有关(哪个应用服务器,哪个规范版本)。

尝试注入(inject) EntityManagerFactory 而不是 EntityManager。然后在 #create(...) 方法中本地创建 EntityManager(从 emf)。上面的链接有一个示例。

关于java - 实体对象持久化时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27292624/

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