@Вызов переходного метода в весеннем режиме гибернации

#java #spring #hibernate #spring-mvc

#java #весна #переход в режим гибернации #spring-mvc

Вопрос:

У меня есть один класс Pojo, в котором я создаю одно поле, которое не сопоставлено с таблицей базы данных. Поэтому я должен объявить объявление поля и метод установки и получения @Transient, иначе это показало бы ошибку.

 @Transient
private String docHistoryString="";

@Transient
public String getDocHistoryString() {
    return docHistoryString;
}

@Transient
public void setDocHistoryString(String docHistoryString) {
    this.docHistoryString = docHistoryString;
}
  

Теперь моя проблема в контроллере. Я установил некоторое значение в этом временном поле, но когда я пытаюсь получить доступ к этой переменной с помощью EL в представлении (JSP), она не выдает значения. Я думаю, это потому, что я использовал аннотацию @transient в методе get.

Комментарии:

1. Можете ли вы опубликовать код, который задает строку docHistoryString, а затем возвращает ее в представление?

2. @Transient используется только в режиме гибернации. Это не имеет никакого особого значения для Spring, Java в целом и JSTL. Ошибка в другом месте.

Ответ №1:

Все аннотации гибернации, включая @Transient , должны применяться в соответствии с типом доступа. По умолчанию это будет так же, как @Id применено. То есть, если вы размещаете @Id в поле, вы должны применить @Transient к полю. И если вы применяете @Id к методу getter, вы должны применить @Transient метод. Методы установщика всегда игнорируются.

Однако его можно настроить (согласно документации), поэтому убедитесь, что кто-то не сделал что-то странное с типами доступа.

Ответ №2:

В соответствии с этим должно быть достаточно объявить поле / свойство

http://download.oracle.com/javaee/5/api/javax/persistence/Transient.html

Вы пробовали просто аннотировать поле / свойство? Для получения дополнительной помощи вам необходимо опубликовать еще несколько фрагментов кода.