Свойство вложенного бина, Исключение: цель недоступна, значение "ноль" возвращает ноль
В отношениях 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: я уже вижу подобные случаи здесь, но ничего не помогает + Я удаляю большую часть кода, размещенного здесь, как поля идентификаторов и так, все геттеры и сеттеры реализованы.
1 ответ
Решение
value="#{createBn.school.adresse.country}"
: Цель недостижима, "ноль" вернул ноль
Это означает, что одно из следующих значений null
:
#{createBn}
#{createBn.school}
#{createBn.school.adresse}
createBn
На первый взгляд выглядит хорошо (иначе у вас бывали и другие проблемы). school
выглядит хорошо, как вы явно создали его с new School()
, Тем не менее, я не вижу этого для adresse
в любом месте. Исправьте это соответственно.
school.setAdresse(new Adresse());