jsf hibernate crud表单关系

jsf hibernate crud表单关系,hibernate,jsf,primefaces,crud,Hibernate,Jsf,Primefaces,Crud,我正在使用Hibernate4、JSF2.2和PrimeFaces4。 当我创建实体CRUD表单时,我应该使用哪种策略 将对象用于关系和实体通用转换器: <h:inputHidden id="gender" value="#{user.gender}" converter="entityconverter"/> Gender.java: @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional

我正在使用Hibernate4、JSF2.2和PrimeFaces4。 当我创建实体CRUD表单时,我应该使用哪种策略

将对象用于关系和实体通用转换器:

<h:inputHidden id="gender" value="#{user.gender}" converter="entityconverter"/>
Gender.java:

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Basic(optional = false)    
@Column(name = "id") 
private Long id

public Long getId() {
    return id;
}

我认为当你第一次加载页面时,性别属性为空,因此你得到了NPE。 您可以尝试添加这样的空检查吗

public Gender getGender() {
    if(gender == null) {
        gender = new Gender();
    }
    return gender;
}

在我看来,object.id看起来更通用、更简单。entityconverter是否特定于任何特定的框架,如JSF?当我使用object.id时,在第一次加载表单时,我会得到对象的NullPointerException。Entityconverter是一个自定义面转换器。教程:您可以发布user.getGender()和gender.getId()的代码吗?我正在使用Netbeans创建的标准实体和数据库中的实体。用代码更新了问题。还有user.getGender()和gender.getId()代码?是的,我知道。但我的实体是通过netbeans中的反向工程生成的。如果我使用这个策略,我必须编辑所有的实体。在表中更改后,我将重新创建实体,所有更改都将消失。相反,我更愿意初始化它作为表单的支持bean。我想了解java大师是使用这种方法,还是使用faces转换器。
@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Basic(optional = false)    
@Column(name = "id") 
private Long id

public Long getId() {
    return id;
}
public Gender getGender() {
    if(gender == null) {
        gender = new Gender();
    }
    return gender;
}