#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
Вы пробовали просто аннотировать поле / свойство? Для получения дополнительной помощи вам необходимо опубликовать еще несколько фрагментов кода.