Создание пользовательского В спящем режиме UserType - Что делает isMutable () средний?

// the following setter does not work
    void Example::setName(const string aName){
        name = aName;" 

Конечно, нет. Вы объявили name как const, поэтому вы не можете назначить его (вы можете только инициализировать его). Удалите const из name, и ваш сеттер будет работать.

8
задан Johann Zacharee 22 October 2008 в 04:21
поделиться

2 ответа

Hibernate будет обрабатывать типы, помеченные как «изменяемые», как если бы они могли изменяться (т.е. требовать ОБНОВЛЕНИЯ) без указания на новую ссылку. Если вы назначите новую ссылку на свойство, загруженное Hibernate, Hibernate распознает это, даже если тип неизменяемый - это происходит постоянно, например, с полями String. Но если, скажем, у вас есть поле StringBuilder и вы пометите его как неизменяемое , Hibernate не не заметит, если вы измените StringBuilder.

См. это сообщение в блоге ] для получения дополнительных сведений и образца проекта.

10
ответ дан 5 December 2019 в 14:07
поделиться

Типичным примером здесь является Строковый класс - это Неизменно, т.е. после того как строка создается, Вы не можете изменить ее содержание или состояние, и если Вы хотите затем, Вы оказываетесь перед необходимостью обрабатывать его в новую копию.

возврат isMutable верного означает, что Вы говорите, что этому объекту могли изменить его состояние внешние объекты, возвращение лжи означает, что необходимо будет скопировать этот объект в новый экземпляр, делающий изменения для утверждения по пути. Или поскольку Вы сказали: "это означает объект, который содержит ссылку на экземпляр этого класса, никогда не будет указывать на другой экземпляр".

2
ответ дан 5 December 2019 в 14:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: