0

我有一个 ClobType,它扩展了 Hibernate 的 UserType 并按照您的期望做:将在数据库中找到的 clob 转换为字符串。我将我的 clob 列映射到 ClobType,当我在我的 JSP 页面中访问它们时,这些列可以很好地呈现。

但是现在我正在尝试设置值,我很难过。因为我可以写${myObject.longField}在我的 JSP 页面告诉我我大概可以说

String s = myObject.getLongField().toString();

并获取字符串,尽管 LongField 是 ClobType 类型。

我不知道如何使用setter。我可以轻松地实例化 ClobType,但是如何给它提供它需要作为 blob 持久存在的字符串数据?

ClobType clobType = new ClobType();
String s = "... a really REALLY long string ...";
/* a miracle occurs */
myObject.setLongField( clobType );
myObjectDAO.saveOrUpdate( myObject );

为了给 ClobType 一个字符串值,我需要什么奇迹?

或者,有没有更好(或更合适)的方法让我的两个设置器返回字符串而不是 ClobTypes?是否有特殊的映射可以做到这一点?我的业务逻辑不需要知道给定的列是作为 blob 实现的。

4

1 回答 1

1

我认为,如果您使用的是当前合理的休眠模式,则可以将 java 字符串映射到数据库 CLOB,而无需使用自定义UserType

尝试

@Lob
public String getLongField() { return longField; }

longField 只是一个String.

如果这行得通,它会比你正在做的简单得多。

于 2012-05-10T22:23:32.267 回答