У меня есть ClobType, который расширяет пользовательский тип Hibernate и делает то, что вы ожидаете: преобразует клаб, найденный в базе данных, в String. Я сопоставил столбцы clob с ClobType, и эти столбцы прекрасно отображались при доступе к ним на моих страницах JSP.Hibernate: Как установить значение пользовательского UserType
Но теперь, когда я пытаюсь установить значение, я в тупике. Потому что я могу написать ${myObject.longField}
в моих страницах JSP говорит мне, что я, вероятно, могу сказать
String s = myObject.getLongField().toString();
и получить строку, несмотря на то, что Longfield имеет типа ClobType.
Что я не знаю, как использовать сеттер. Я могу легко создать экземпляр ClobType, но как я могу передать ему строковые данные, которые нужно сохранить в виде капли?
ClobType clobType = new ClobType();
String s = "... a really REALLY long string ...";
/* a miracle occurs */
myObject.setLongField(clobType);
myObjectDAO.saveOrUpdate(myObject);
Какое чудо мне нужно, чтобы дать ClobType значение строки?
Или есть лучший (или более правильный) способ, когда мои два сеттера возвращают строки, а не ClobTypes? Есть ли специальное отображение, которое это делает? В моей бизнес-логике нет необходимости знать, что данный столбец реализован как blob.
Спасибо за указатель. Но я не использую аннотации, и я не знаю, как «перевести» это. – Marvo
Возможно, есть способ сделать это и с xml, но я не знаю перевода сразу. –
Знаешь что? Я случайно делал это «правильным» способом. Когда я перегенерировал мои pojos из моих картографических файлов сегодня, мои тесты на этих полях clob сломались. Причина в том, что отображение было там, но POJO имели те поля, которые были определены как строки. И Hibernate только что-то волшебным образом справляется с этим. – Marvo