我使用hibernate 4、jsf 2.2和素数面4。当我创建一个具有关系的实体CRUD表单时,我应该使用哪种策略?
使用关系对象和实体通用转换器:
<h:inputHidden id="gender" value="#{user.gender}" converter="entityconverter"/>
或使用object.id
<h:inputHidden id="gender_id" value="#{user.gender.id}" />
更新:我正在使用由Netbeans创建的标准实体和数据库中的实体。
User.java:
@JoinColumn(name = "gender", referencedColumnName = "id")
@ManyToOne(optional = false, fetch = FetchType.LAZY)
private Gender gender;
public Gender getGender() {
return gender;
}
Gender.java:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Long id
public Long getId() {
return id;
}
我认为第一次加载页面时,gender属性为null,因此会得到NPE。,你能试着添加这样的空检查吗
public Gender getGender() {
if(gender == null) {
gender = new Gender();
}
return gender;
}