Свойство вложенного бина, Исключение: цель недоступна, значение "ноль" возвращает ноль

В отношениях 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());
Другие вопросы по тегам