【发布时间】:2012-01-17 17:37:31
【问题描述】:
在我的数据模型中有许多实体,其中属性映射到这样的枚举:
@Enumerated(EnumType.STRING)
private MySpecialEnum enumValue;
MySpecialEnum 定义了一些固定值。映射工作正常,如果数据库为列保存 NULL 值,我也会在 enumValue 属性中得到 NULL。 问题是,我的后端模块(我对此没有影响)使用 CHAR 列中的空格来标识没有设置任何值。所以我得到一个 IllegalArgumentException 而不是 NULL 值。
所以我的问题是:是否有一个 JPA 事件,我可以在其中更改从数据库读取的值,然后再映射到枚举属性? 对于写访问,@PrePersist 可以在其中将 Null 值更改为空格。我知道有@PostLoad-event,但这是在映射后处理的。
顺便说一句:我正在使用 WebSphere Application Server 中附带的 OpenJpa。
【问题讨论】: