【发布时间】:2016-01-05 00:40:53
【问题描述】:
我们正在开发一个连接到旧数据库的应用程序。这是非常“无类型”的,几乎所有数据都使用字符串。更糟糕的是,它远非同质:它使用不同的日期或时间模式('YYDDMM'、'HHMMSS'、毫秒)和布尔值('Y'/'N'、'X'/''),用于例子。
我们想使用 JPA (EclipseLink) 和自定义转换器。问题是@Convert 需要一个实现AttributeConverter 的类,所以我们必须为每个模式创建新的类。我想要的是一个 BooleanConverter 类,它可以用值 'Y'/'N' 或 'X'/' ' 来实例化。
这显然超出了 JPA 规范,但也许可以使用 EclipseLink 注释/配置。查看其@Convert 注释,可以通过名称指定转换器。如果我可以注册 ynBooleanConverter 和 xSpaceBooleanConverter,这听起来不错:
// Unfortunately, this method does not exist :(
Session.addConverter('ynBooleanConverter', new BooleanConverter("Y", "N"));
@Entity
public class MyEntity {
@Convert("ynBooleanConverter")
private Boolean myBoolean;
...
}
有可能吗?我们还有哪些其他选择?
【问题讨论】:
-
你适合使用JPA 2.1转换器吗?可以从 eclipselink 2.5 版获得?
-
我可以使用最新版本的 EclipseLink,但我不知道如何解决。
标签: java hibernate jpa orm eclipselink