sin*_*pop 9 java orm hibernate jpa eclipselink
我们正在开发一个连接到遗留数据库的应用程序.这是非常"无类型",几乎所有数据都使用字符串.更糟糕的是,这是非常均匀的:它使用不同的日期或时间模式('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;
...
}
Run Code Online (Sandbox Code Playgroud)
可能吗?我们还有其他选择吗?
@Entity
@ObjectTypeConverters({
@ObjectTypeConverter(name = "ynBooleanConverter", objectType = Boolean.class, dataType = String.class,
conversionValues = {
@ConversionValue(objectValue = "true", dataValue = "Y"),
@ConversionValue(objectValue = "false", dataValue = "N") }),
@ObjectTypeConverter(name = "xSpaceBooleanConverter", objectType = Boolean.class, dataType = String.class,
conversionValues = {
@ConversionValue(objectValue = "true", dataValue = "X"),
@ConversionValue(objectValue = "false", dataValue = " ") }),
})
public class MyEntity {
@Convert("ynBooleanConverter")
private boolean ynBoolean;
@Convert("xSpaceBooleanConverter")
private boolean xSpaceBoolean;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
918 次 |
| 最近记录: |