级联持续存在于JPA

时间:2012-03-24 14:22:38

标签: java jpa persistence

我有两个表,如下图所示: enter image description here

如您所见,这是一个非常简单的示例,与此相关的SQL代码是:

CREATE TABLE mere (
idmere INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
nom VARCHAR(50) NOT NULL,
PRIMARY KEY(idmere)
);

CREATE TABLE fil (
idfil INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
mere_idmere INTEGER UNSIGNED NOT NULL,
nom VARCHAR(50) NOT NULL,
PRIMARY KEY(idfil, mere_idmere),
FOREIGN KEY(mere_idmere)
REFERENCES mere(idmere)
  ON DELETE NO ACTION
  ON UPDATE NO ACTION
);

使用Netbeans,我创建了两个实体和两个JpaController(与创建的实体相关): enter image description here

插入新行时,我收到此错误(但只在表格中插入新行):

Grave: null
java.lang.NullPointerException
at testvirugule.FilJpaController.create(FilJpaController.java:37)
at testvirugule.Main.main(Main.java:35)

更新

我的新源代码:

 EntityManagerFactory emf=Persistence.createEntityManagerFactory("testvirugulePU");
 MereJpaController mjc=new MereJpaController(emf);

 FilJpaController fjc=new FilJpaController(emf);

 Mere m=new Mere(null,"mere1");
 FilPK fpk=new FilPK();
 Fil f=new Fil(fpk,"fils1");
 java.util.List<Fil> lf=new ArrayList<Fil>();
 lf.add(f);
 m.setFilList(lf);

 mjc.create(m);    

但是我收到了这个错误:

Exception in thread "main" javax.persistence.EntityNotFoundException: Could not find   entity for id: testvirugule.FilPK[ idfil=0, mereIdmere=0 ]
at  org.eclipse.persistence.internal.jpa.EntityManagerImpl.getReference(EntityManagerImpl.java:1279)
at testvirugule.MereJpaController.create(MereJpaController.java:44)
at testvirugule.Main.main(Main.java:31)
   Java Result: 1

如何解决这个问题?感谢。

1 个答案:

答案 0 :(得分:0)

NPE是要修复的最简单的异常之一,因为堆栈跟踪会告诉您发生问题的行和文件。在文本编辑器中进行简单的检查,显示行号,通常可以解决问题。

java.lang.NullPointerException
at testvirugule.FilJpaController.create(FilJpaController.java:37)
at testvirugule.Main.main(Main.java:35)

转到FilJpaController中的第37行,查看该行上的每个对象引用。其中一个是null,因为您没有正确初始化它。