Свойство доступа к полю Java Hibernate или доступ на основе свойств

1

я разрабатываю некоторые улучшения в устаревшей системе,

У меня такой класс

class MyPersistentClazz
{
      private String aTPlace;
      public void setATPlace(.......){......}//yes mistyping    
      @Column(name="atPlaceOrder")
      public String getATPlace(){return aTPlace;}
}

они обычно загружают этот класс, используя эти методы

final MyPersistentClazz clazz = (MyPersistentClazz)session.createCriteria(MyPersistentClazz.class).add(idEq(id)).uniqueResult();

и используя методы загрузки и получения, и работает нормально.

но проблема возникает, когда я использую проекции.

final Projection p=Projections.projectionList().add(Projections.property("d.aTPlace"),"aTPlace");

бросает

Exception in thread "main" org.hibernate.QueryException: could not resolve property:

мой вопрос...

при использовании прогнозов, я думаю, что Hibernate вызывает сеттер каждого свойства, это утверждение ОК?

при использовании критериев.uniqueResult или загрузить или получить Hibernate использовать отдельный доступ к свойствам поля?

или почему работает с некоторыми и не работает с другими с тем же сеттером?

мы используем только аннотации, а не XML.

большое спасибо.

Теги:
hibernate
projection

1 ответ

1

Как Hibernate работает с вашим bean-компонентом, зависит от того, как вы его аннотировали. Если вы аннотируете переменные экземпляра, то Hibernate будет использовать прямую инъекцию и обходить ваши методы Set. В противном случае он будет использовать ваши методы Set.

Может быть, это неправильное преобразование имени вашего свойства в имя метода Set? Попробуйте изменить имя свойства на нечто более простое (без этой серии заглавных букв) и убедитесь, что случай свойства в вашей проекции правильный.

  • 0
    эй, фил ... да, на самом деле сейчас работает .. правильно устанавливаю установщики и получатели ... я отправляю вопрос, потому что это странно для меня, и я хочу понять .. пожалуйста, проверьте мой отредактированный вопрос, мы используем аннотации не XML
  • 0
    Я не предполагал и не упоминал XML. Если вы аннотируете методы get вместо свойств, то Hibernate будет использовать get / set. Однако я не сказал об этом явно, поскольку никто никогда не комментирует методы ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню