JPA сущность manyToOne null
У меня проблема с сущностью jpa, которая может быть нулевой, когда я ее сохраню.
У меня есть сотрудник, у которого может быть начальник, но у него также может не быть начальника, и это моя проблема. Когда у моего сотрудника нет начальника, отображается ошибка, и я не знаю, как ее решить.
javax.ejb.EJBException: бин обнаружил исключение не из приложения; Вложенное исключение: org.apache.openjpa.persistence.ArgumentException: обнаружен новый объект в постоянном поле "patinfo.gestionprojet.ejb.EmployeBean.responsable" во время присоединения. Однако это поле не разрешает каскадное присоединение. Установите атрибут каскада для этого поля в CascadeType.MERGE или CascadeType.ALL (аннотации JPA) или "объединить" или "все" (JPA orm.xml). Вы не можете прикрепить ссылку на новый объект без каскадирования. FailedObject: patinfo.gestionprojet.ejb.EmployeBean@7a8f9cc4
Я пытался использовать обнуляемый параметр @joincolumn, но это ничего не меняет.
@ManyToOne
@JoinColumn(name="EMP_NoResponsable")
private EmployeBean responsable;
У кого-нибудь есть идея??
Когда я попробовал с каскадной атрибуцией вот так:
Когда я пытался с этими параметрами,
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="EMP_NoResponsable")
private EmployeBean responsable;
Этот запрос выполнен
INSERT INTO employe (EMP_Adresse, EMP_B13iemeSalaireInclus, EMP_BActif,
EMP_BAllocFam, EMP_BCongeClient, EMP_BConjointActLucrative,
EMP_BConjointAllocFam, EMP_BJoursFeriesInclus, EMP_BSalaireMensuel,
EMP_BVacancesIncluses, EMP_CantonHabitation, EMP_CasePostale,
EMP_DateDebutContrat, EMP_DateFinContrat, EMP_DateNaissance,
EMP_Deleted, EMP_DescriptionPoste, EMP_Email, EMP_EmailProf,
EMP_EmployeurConjoint, EMP_EtatCivilDateDebut, EMP_Localite,
EMP_Montant13iemeSalaire, EMP_MontantSalaire, EMP_NbHeuresSemaine,
EMP_NoAVS, EMP_NoFax, EMP_NoFaxProf, EMP_NoImmeuble, EMP_NoMobile,
EMP_NoMobileProf, EMP_NoTel, EMP_NoTelProf, EMP_Nom, EMP_Npa,
EMP_PermisSejour, EMP_Prenom, EMP_Sexe, EMP_TarifHeure,
EMP_TarifHeureCoutReel, EMP_TauxOccupation, EMP_TempsEssai,
EMP_TxActiviteConjoint, EMP_NoCanton, EMP_NoContact, EMP_NoEntreprise,
EMP_NoEtatCivil, EMP_NoNationalite, EMP_NoPays, EMP_NoResponsable)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?)
[params=(null) null, (null) null, (int) 0, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (int) 0, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (int) 0, (null) null, (null) null, (null) null, (float) 0.0, (float) 0.0, (float) 0.0, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null, (null) null]} [code=1048, state=23000]
И это явно не то, что я хочу..
Добавить:
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void add(EmployeBean a) {
getEntityManager().persist(a);
}
Модифицировать:
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public EmployeBean modify(EmployeBean a) {
EmployeBean ret = getEntityManager().merge(a);
return ret;
}