каскад сохраняется с JPA - PullRequest
0 голосов
/ 24 марта 2012

У меня есть две таблицы, как показано на следующей диаграмме: 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

при вставке новых строк я получил эту ошибку (но новая строка вставляется только в таблицу Mere):

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 голосов
/ 24 марта 2012

NPE - это одно из самых простых исключений, которое нужно исправить, поскольку трассировка стека сообщает вам строку и файл, в котором возникла проблема. Простая проверка в текстовом редакторе с отображением номеров строк часто помогает.

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

Перейдите к строке 37 в вашем FilJpaController и посмотрите на каждую ссылку на объект в этой строке. Один из них является нулевым, потому что вы не инициализировали его правильно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...