2015-10-07 2 views
5

Я использую hibernate 4.1.9. Мой код@Transient не работает в спящем режиме

@Transient 
private String ldapIdTemp; 

пакет

import javax.persistence.Transient; 

Еще в спящем запросе, он не работает и поставить атрибут в запросе.

часть сниппета запроса (assetasset0_.ldapIdTemp как ldapIdTemp16_0_,)

Я не уверен, что я делаю неправильно.

ответ

7

Вы можете попробовать создать и присваивателя для поля и аннотирования метод GET с @Transient, следующим образом:

private String ldapIdTemp; 

@Transient 
public String getLdapIdTemp() { 
    return ldapIdTemp; 
} 

public void setLdapIdTemp(String ldapIdTemp) { 
    this.ldapIdTemp = ldapIdTemp; 
} 
+1

Это была именно моя проблема. –

4

Многое зависит от того, как это поле «интегрированы» в вашем Entity или иерархии классов. Кроме того, поле против свойство -access может вызвать проблему для вашей настройки. См. Это post для подробного объяснения.

В вашем случае, я мог себе представить, что вы либо:

  1. смешанное поле и свойство доступа в вашей стратегии наследования объекта
  2. конфигурации на основе XML для использования Hibernate в приложении.

В обоих случаях JPA 2.0/2.1 specification четко сказано в разделе 2.3.1:

Это ошибка, если тип доступа по умолчанию не может быть определен и тип доступа не указан явно с помощью аннотаций или XML-дескриптор. Поведение приложений mix размещение аннотаций по полям и свойствам в иерархии сущности без явного указания аннотации доступа не определено.

Пожалуйста, убедитесь, что ваши постоянные Entity классы имеют либо полевого ИЛИ свойству -На аннотаций.