ben bir Java EE uygulamasında aşağıdaki modeli nesneler:JPA EJBException id entityManager.persist() üzerinde boş
Person.java
@Entity
@Table(name = "person")
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_person")
private Integer idPerson;
// some other fields (name, birthdate, etc.)
@OneToOne(cascade = CascadeType.ALL, mappedBy = "person")
private User user;
// Constructors, get/set, etc.
User.java
@Entity
@Table(name = "user")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "id_person") // Because it's a FK
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer idPerson;
// some other fields (username, etc)
@JoinColumn(name = "id_person", referencedColumnName = "id_persona", insertable = false, updatable = false)
@OneToOne(optional = false, cascade = CascadeType.PERSIST)
private Person person;
// Constructors, get/set, etc.
ManagedBean
aşağıdaki gibidir:
UserController.java
@ManagedBean(name = "usuarioController")
@ViewScoped
public class UsuarioController implements Serializable{
private static final long serialVersionUID = 7002352152240769558L;
@EJB
private UserFacadeLocal userEJB;
private Person person;
private User user;
@PostConstruct
public void init() {
person = new Person();
user = new User();
}
// getters/setters
public void register(){
try{
this.user.setPerson(person);
this.person.setUser(user); // BreakPoint 1
userEJB.create(user);
// Success Message
} catch (Exception e){ // Breakpoint 2
// Error message
}
}
User
ve Person
nesneler bir JSF sayfasında bir <h:form>
ile doldurulur. Hata ayıklama programı, Breakpoint 1
içinde person.idPerson
ve user.idPerson
alanlarının NULL olduğunu görebiliyorum. Breakpoint 2
person.idPerson
'da bir değer var, ancak user.idPerson
hala NULL. yakalandı Exception
(NetBeans değişkenler bilgi ile göre) bir EJBException
ve mesajdır: Sorun nerede olduğunu bulamıyorum
Error Code: 1048
Call: INSERT INTO user (id_person, ...) VALUES (?, ?, ?, ?, ?)
bind => [5 parameters bound]
Query: InsertObjectQuery(model.User[ idPerson=null ])
...stacktrace...
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'id_person' cannot be null
. JavaEE 7'yi JDK 1.8, JSF 2.2 ve EclipseLink2.5.2 ile Kalıcı Sağlayıcı olarak kullanıyorum.
Herhangi bir yardım için teşekkür ederiz. Teşekkürler
Kullanıcı –
Üzgünüz, bu bir çeviri hatası, 'usuario' (kullanıcı ispanyolca) okuduğunuz yerde olmalıdır. Genellikle, değişkenin amacının daha iyi bir "uluslararası anlayış" için değişkenler adını "çeviririm". Şimdi değiştireceğim –