2010-06-08 2 views
0

Я хочу реализовать класс, который его поля могут изменять (добавлять новые поля) через время. Проблема в том, что я хочу дать моему клиенту эту возможность сделать это сам, просто заполнив форму того, в каком поле и какой тип он хочет, а затем изменение будет выполнено автоматически! Кто-нибудь знает, как я могу реализовать этот класс и внести это изменение в мою базу данных с помощью аннотации спящего режима?реализация динамического класса с использованием аннотации hibernate

ответ

0

Вы должны использовать карту пар имя-значение. Карты поддерживаются Hibernate как таковыми, и их содержимое является динамическим.

+0

Спасибо. Извините, я новичок в спящем режиме. из моего понимания hibernate создает новую таблицу для хэш-карты. если значения моей хэш-карты являются объектом другого класса, поддерживает ли hql запрос, который должен выбрать некоторые значения из этого объекта? Другими словами, hql поддерживает вложенный выбор запросов в этом случае? –

+0

@ Zahra обычно нет таблицы, необходимой для самой карты, только для содержащихся объектов (если это сами сущности). AFAIK HQL в целом поддерживает вложенные выборки. Но содержимое карты загружается Hibernate автоматически при доступе, поэтому вы также можете выполнить простой поиск на карте вместо HQL. –

+0

Большое спасибо. Ну, на самом деле мне нужен запрос HQL, потому что у меня есть поиск, которому нужны некоторые поля объекта, который я помещаю на карту! –

0

Вы определенно не можете сделать это изменение с помощью Hibernate Annotations, так как аннотации могут быть привязаны только к классу во время компиляции. Однако, если вы хотите изменить структуру своего класса во время выполнения (добавьте поля, методы и т. Д.), Вам придется перекомпилировать класс и воссоздать сопоставление базы данных, которое использует Hibernate для доступа к вашей базе данных.

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