Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在hibernate 5.3中使用键贡献类型_Java_Hibernate_Kotlin - Fatal编程技术网

Java 如何在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

在我的应用程序中,我希望在声明自定义方言时注册自定义类型的名称。我不想使用@TypeDef注释,因为我想在启动时为加载的测试映射不同于在具体应用中的测试。在Hibernate 5.3之前,我会做如下的事情

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。