Java 如何在hibernate 5.3中使用键贡献类型
在我的应用程序中,我希望在声明自定义方言时注册自定义类型的名称。我不想使用@TypeDef注释,因为我想在启动时为加载的测试映射不同于在具体应用中的测试。在Hibernate 5.3之前,我会做如下的事情Java 如何在hibernate 5.3中使用键贡献类型,java,hibernate,kotlin,Java,Hibernate,Kotlin,在我的应用程序中,我希望在声明自定义方言时注册自定义类型的名称。我不想使用@TypeDef注释,因为我想在启动时为加载的测试映射不同于在具体应用中的测试。在Hibernate 5.3之前,我会做如下的事情 class TestCustomH2Dialect : PostgreSQL94Dialect() { init { this.registerColumnType(Types.JAVA_OBJECT, "LONGVARCHAR") } overrid
class TestCustomH2Dialect : PostgreSQL94Dialect() {
init {
this.registerColumnType(Types.JAVA_OBJECT, "LONGVARCHAR")
}
override fun contributeTypes(typeContributions: TypeContributions, serviceRegistry: ServiceRegistry) {
super.contributeTypes(typeContributions, serviceRegistry)
typeContributions.contributeType(
MyTestType(),
MyClass::class.java.canonicalName,
"MyTestType"
)
}
}
然后这个声明就起作用了
@Type(type = "MyTestType")
@Column(name = "test_type", nullable = false)
var testType: TestType,
在Hibernate 5.3中,不推荐使用此ContributyType方法,并且由于文档的原因,应该使用仅包含BasicType的版本作为参数。问题是,当我试图使用它时,类型的别名无法识别,除非我将@TypeDef或写入@type注释的完整类路径。有其他选择吗?您的
UserType
贡献应该可以不加更改地工作,直到6.0版,那时整个类型系统都将被修改,并且几乎没有旧的API会保留下来。它的去润滑标记只是对未来的警告。如果它在5.2和5.3之间停止工作,那么您应该提交一个回归bug。