Как избежать Lazy fetch, даже если он установлен в режим lazy fetch и столбец ecrypt / decrypt .....? - PullRequest
0 голосов
/ 05 декабря 2011

У меня есть связь один ко многим в моем dto,

Родительский DTO: Вопрос
Детский DTO: История

Вопрос 1:

Означает, что одна запись вопроса имеет много записей истории, я использую JPA2.x с Hibernate, Я связал сущности с помощью метода / режима ленивого извлечения. В некоторых местах я хочу, чтобы ленивая загрузка ... а в некоторых местах я не хочу ленивых завозов, даже егар. Означает, что я не хочу сам сбор данных. Мне нужен только список родительских классов, даже если я вызываю метод getHistories (), он не должен выполнять ленивую выборку в нескольких местах .... Как использовать entityManager, чтобы избежать ленивой выборки ..... даже если коллекция была установлена ​​в режим ленивого извлечения .....?

Вопрос 2:

Мне нужно зашифровать вопрос, используя функции кодирования / декодирования mysql. при вставке зашифруйте значение и сохраните. при выборе декодировать содержимое .....

Решение может быть в запросе сопоставления или критерия ...?

Заранее спасибо ....!

Ответы [ 2 ]

0 голосов
/ 06 декабря 2011

Для вопроса 1 вам нужно сделать две вещи:

  1. Если вы хотите, чтобы ваши родительско-дочерние объекты выбирались «лениво», то аннотируйте поля направления направления с помощью fetch= ленивыйЭто должно хорошо работать в сеансе гибернации, если вы не загружаете или не «касаетесь» одного из ленивых загруженных полей.

  2. Если вы хотите, чтобы ваши родительско-дочерние объекты были выбраны 'с нетерпением », затем аннотируйте поля в двунаправленной ассоциации как fetch = eager.

  3. Если вы хотите« в некоторых местах, я не хочу ленивую выборку, даже не egar », тогдаВы должны решить во время кода, должны ли быть отношения между сущностью родитель-потомок, если нет, то просто не отображайте двунаправленную ассоциацию.Вы МОЖЕТЕ создать более одного класса сущностей для сопоставления различных ассоциаций, даже сущностей без ассоциации.

0 голосов
/ 05 декабря 2011

Вопрос 1:

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

Вопрос 2: См. http://docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/annotations/ColumnTransformer.html. Пример в javadoc это именно то, что вы хотите сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...