powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как запретить пустые и null значения для enum в БД?(hibernate)
19 сообщений из 19, страница 1 из 1
Как запретить пустые и null значения для enum в БД?(hibernate)
    #38795146
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть Сущность. одно из его полей это enum.

enum может принимать значения VAL1 и VAL2.

Надо сделать так чтобы в базе данных в соответствующем столбце нельзя было ничего написать(даже если явно полезть в базу не через приложение) кроме VAL1 и VAL2.
Hibernate умеет так делать?
...
Рейтинг: 0 / 0
Как запретить пустые и null значения для enum в БД?(hibernate)
    #38795154
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerдаже если явно полезть в базу не через приложение
Каким боком хибернейт тут может помочь? Ограничение надо ставить на уровне БД
...
Рейтинг: 0 / 0
Как запретить пустые и null значения для enum в БД?(hibernate)
    #38795155
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл ник,

hbm2ddl.auto=update

unique например hibernate умеет делать
...
Рейтинг: 0 / 0
Как запретить пустые и null значения для enum в БД?(hibernate)
    #38795156
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerЕсть Сущность. одно из его полей это enum.

enum может принимать значения VAL1 и VAL2.

Надо сделать так чтобы в базе данных в соответствующем столбце нельзя было ничего написать(даже если явно полезть в базу не через приложение) кроме VAL1 и VAL2.
Hibernate умеет так делать?

А при чем здесь Hibernate?
Тут надо на самой базе constraint делать.
:-)
...
Рейтинг: 0 / 0
Как запретить пустые и null значения для enum в БД?(hibernate)
    #38795164
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mad_nazgul,

http://stackoverflow.com/a/4546164/2674303

а на базе это как сделать?
...
Рейтинг: 0 / 0
Как запретить пустые и null значения для enum в БД?(hibernate)
    #38795202
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionermad_nazgul,

http://stackoverflow.com/a/4546164/2674303

а на базе это как сделать?

Зависит от БД.
Но обычно пишется ХП, которая вешается на BEFORE INSERT и BEFORE UPDATE
В ней проверяется и если что делается EXECPTION
...
Рейтинг: 0 / 0
Как запретить пустые и null значения для enum в БД?(hibernate)
    #38795222
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mad_nazgul,

как-то не очень мне это нравится решение, если честно.


Это даже наверное на триггер больше похоже, чем на хранимку.
...
Рейтинг: 0 / 0
Как запретить пустые и null значения для enum в БД?(hibernate)
    #38795225
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerзабыл ник,

hbm2ddl.auto=update

unique например hibernate умеет делать

И? Даже несмотря на то, что использовать автогенерацию на продакшене зло, что мешает после генерации исполнить свой скрипт и доделать нужные констрейнты через sql? Как эмулировать енум - вариантов море, некоторые как mysql поддерживают такой тип, в других можно сделать констрейнт, или сделать через foreign key таблицу со всеми возможными вариантам значений
...
Рейтинг: 0 / 0
Как запретить пустые и null значения для enum в БД?(hibernate)
    #38795260
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл никquestionerзабыл ник,

hbm2ddl.auto=update

unique например hibernate умеет делать

И? Даже несмотря на то, что использовать автогенерацию на продакшене зло, что мешает после генерации исполнить свой скрипт и доделать нужные констрейнты через sql? Как эмулировать енум - вариантов море, некоторые как mysql поддерживают такой тип, в других можно сделать констрейнт, или сделать через foreign key таблицу со всеми возможными вариантам значений

всмысле и?

Если он умеет какие-то ограничения в базу прокидывать почему бы не предположить, что он и другие может?
...
Рейтинг: 0 / 0
Как запретить пустые и null значения для enum в БД?(hibernate)
    #38795286
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,
тогда расшифруй
авторнельзя было ничего написать(даже если явно полезть в базу не через приложение)
без фраз "домохозяек пролезть".
ЗЫ
в хибере тоже есть триггер
...
Рейтинг: 0 / 0
Как запретить пустые и null значения для enum в БД?(hibernate)
    #38795298
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хибернейт не является инструментом для решения архитектурных вопросов.
Курите доки по целевой DBMS которую используете. Там - все ответы.
...
Рейтинг: 0 / 0
Как запретить пустые и null значения для enum в БД?(hibernate)
    #38795320
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerвсмысле и?

Если он умеет какие-то ограничения в базу прокидывать почему бы не предположить, что он и другие может?

Я тебе первым постом сказал, что такие ограничения ставятся на уровне ДБ. После этого ты стал залупаться, а сейчас еще и хамить. Хибернейт нкапсулирует только базовые вещи, которые стандартизованы или поддерживаются почти всеми базами, enum констрейнт в их число не входит по очевидным причинам.
...
Рейтинг: 0 / 0
Как запретить пустые и null значения для enum в БД?(hibernate)
    #38795328
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

То, что ты хочешь - называется check constraint. Умеет практически любая вменяемая СУБД. Реализуется, как уже сказали, средствами СУБД.
...
Рейтинг: 0 / 0
Как запретить пустые и null значения для enum в БД?(hibernate)
    #38795393
smackmychi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123, определить UserType и nullable = false?
...
Рейтинг: 0 / 0
Как запретить пустые и null значения для enum в БД?(hibernate)
    #38795414
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123questioner,
тогда расшифруй
авторнельзя было ничего написать(даже если явно полезть в базу не через приложение)
без фраз "домохозяек пролезть".
ЗЫ
в хибере тоже есть триггер

пролезть = открыть командную строку СУБД и написать там команды типа update, delete, unsert.

Хм. надо про триггеры в хибере почитать.
...
Рейтинг: 0 / 0
Как запретить пустые и null значения для enum в БД?(hibernate)
    #38795415
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл никЯ тебе первым постом сказал, что такие ограничения ставятся на уровне ДБ. После этого ты стал залупаться, а сейчас еще и хамить.
Не знаю почему тебе так показалось, но ничего такого я не делал.
...
Рейтинг: 0 / 0
Как запретить пустые и null значения для enum в БД?(hibernate)
    #38795745
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,
Если "пролез", тогда причем хибер?
...
Рейтинг: 0 / 0
Как запретить пустые и null значения для enum в БД?(hibernate)
    #38795907
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока что не все юзкейзы работают и соответсвенно что то проверяют изменением значений напрямую в базе. Ну и заметили, что можно в это поле написать пустоту.
...
Рейтинг: 0 / 0
Как запретить пустые и null значения для enum в БД?(hibernate)
    #38796000
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerПока что не все юзкейзы работают и соответсвенно что то проверяют изменением значений напрямую в базе. Ну и заметили, что можно в это поле написать пустоту.
защита от админов и программистов призрачна).
Защищайте БД заказчика.
Надеюсь там они не лазят)
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как запретить пустые и null значения для enum в БД?(hibernate)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]