2014-07-14 3 views
0

В моем Person объекте, допустим, я хотел бы создать неизменяемое поле - name.Создание поля объекта Неизменяемый

@Entity 
public class Person { 
    @Id 
    private Long id; 

    @Column(name = "name") 
    private String name; 

    public Person() {} // no-args constructor for Hibernate 

    // getter for id and name fields 
} 

Как я понимаю, следующий достаточно хорош для Hibernate, чтобы получить человека на основе id просмотровых - это будет использовать setters библиотеки Hibernate для id и name.

Но если я хочу создать новый Person с неизменяемым полем name, как бы мне нужно было изменить вышеуказанный код?

ответ

2

Добавить конструктор, который принимает имя arg. Конструктор no-arg должен существовать для Hibernate, но он не должен быть общедоступным. Принудительно вызвать код для использования конструктора с именем arg.

Или используйте статический класс Builder, который сможет напрямую установить личное поле; но в этом случае это кажется излишним.

Смежные вопросы