Как я вставляю нулевое значение в булев атрибут, когда использование В спящем режиме?

У меня есть класс с булевым атрибутом. Когда я инстанцирую и сохраняю этот класс, булев атрибут снабжен "ложным" значением вместо вероятного "пустого указателя". Как я могу установить булев атрибут на "Пустой указатель"?

5
задан Pedro Rolo 1 June 2010 в 15:23
поделиться

3 ответа

Это странная проблема. Атрибут Boolean с null определенно предполагается сохранить как NULL , и тип столбца tinyint позволяет это. Я не могу самостоятельно исследовать проблему, но вот что я бы сделал:

Во-первых, Я бы активировал ведение журнала операторов DML Hibernate и параметров JBDC, чтобы подтвердить, что Hibernate фактически передает NULL (и должен). Соответствующие категории (глава 3.5. Ведение журнала ): org.hibernate.SQL и org.hibernate.type .

Если первый тест не выявит проблемы, я бы попытался дополнительно изолировать ее с помощью простого тестового класса, использующего необработанный JDBC, чтобы вставить логическое значение со значением null ( а также прочтите). Если этот тест не будет положительным, я бы начал подозревать драйвер JDBC.

Кстати, какой драйвер JDBC (и версию) вы используете? Если вы используете драйвер Microsoft, попробуйте последнюю версию jTDS (и наоборот).

3
ответ дан 14 December 2019 в 01:02
поделиться

Во-первых, убедитесь, что вы определяете объект Boolean , а не тип boolean .

Затем, если вы используете Hibernate с атрибутами JPA, вы можете добавить @Column (nullable = true) , чтобы явно указать Hibernate, что столбец должен иметь значение NULL по умолчанию.

4
ответ дан 14 December 2019 в 01:02
поделиться

Сначала убедитесь, что объект, который вы пытаетесь сохранить, является логическим, а не примитивным логическим. Во-вторых, вы можете определить соответствующий столбец как char (1), который может содержать «Y», «N» или нулевое значение. и, наконец, самое важное, добавьте к вам hibernate.cfg.xml следующую строку: -

<property name="query.substitutions">'Y'=true,'N'=false</property>

если вы используете файл hibernate.properties, тогда используйте следующее: -

hibernate.query.substitutions true 'Y', false 'N'

это поможет вам сохранить нулевые значения в логические тип столбец. и не забудьте сопоставить свойство как type = "boolean" в файле сопоставления.

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

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