在OneToOne关系中,我不能坚持Adresse的字段,但我没有得到学校字段的错误,它给出了这个错误:
javax.el.PropertyNotFoundException: /inscription/school-inscription.xhtml @29,91 value="#{createBn.school.adresse.country}": Target Unreachable, 'null' returned null
这是视图:
<h:inputText id="name" value="#{createBn.school.name}" pt:placeholder="ex: Dalton" />
<h:inputText value="#{createBn.school.creationDate}" pt:placeholder="31-12-2000" />
<h:selectOneMenu value="#{createBn.school.adresse.country}" styleClass="form-control">
<f:selectItems value="#{countriesList.countries}" />
</h:selectOneMenu>.....
所以createBn:
@Named
@SessionScoped
public class CreateBn implements Serializable{
private static final long serialVersionUID = 1L;
private School school;
@EJB
private SchoolPr schoolPr;
public CreateBn(){
user = new User();
school = new School();
}
public void createSchool(){
schoolPr.createSchool(school);
}
以下是学校实体和地址实体:
@Entity
@Table(schema = "school", name = "school")
public class School implements Serializable {
....
private String name;
@OneToOne @JoinColumn(name = "adressId")
private Adresse adresse;
//getters +setters
地址:
@Entity
@Table(schema = "school", name = "adress")
class Adresse implements java.io.Serializable {
..
private String country;
//getters +setters
Ps:我已经在这里看到了类似的情况,但没有任何帮助+我删除了这里发布的大部分代码,如ID字段,因此,所有的getter和setter都已实现。
答案 0 :(得分:0)
value="#{createBn.school.adresse.country}"
:目标无法访问,'null'返回null
这意味着以下值之一为null
:
#{createBn}
#{createBn.school}
#{createBn.school.adresse}
createBn
乍一看似乎没问题(否则你也会遇到其他问题)。当您使用school
明确创建new School()
时,adresse
看起来没问题。但是,我在任何地方都没有看到school.setAdresse(new Adresse());
。相应地修复它。
{{1}}