首页 > 解决方案 > 用于 Hibernate 的 Kotlin 包级 TypeDefs

问题描述

我有一个 hibernate ( TipoSiNo) 的自定义类型,这相当于YesNoType西班牙语 (S/N) 的但是。

使用 java 时,我将此类型声明为 package-info.java 文件中布尔字段的默认值:

@TypeDefs(@TypeDef(name = "si_no", typeClass = TipoSiNo.class, defaultForType = Boolean.class))
package com.xyz;

import org.hibernate.annotations.TypeDef;
import org.hibernate.annotations.TypeDefs;

import com...TipoSiNo;

这适用于 java 实体类,但是当我将它们转换为 kotlin 时出现错误:

Data conversion error converting "'S'...

所以我想我必须将 package-info 文件转换为 kotlin:

@file:TypeDefs(TypeDef(name = "si_no", typeClass = TipoSiNo::class, defaultForType = Boolean::class))

package com.xyz

import org.hibernate.annotations.TypeDef
import org.hibernate.annotations.TypeDefs

import com...TipoSiNo

但即便如此,它似乎也不起作用。

标签: javahibernatekotlin

解决方案


Kotlin目前没有等价物package-info.java。作为一种解决方法,您可以简单地package-info.java在 Kotlin 中包含 a ,它将被处理。

如果您使用的是 Spring Boot,您可能会遇到这个额外的问题:How to configure package level @TypeDefs with Spring Hibernate

当它们在 package-info.java 类时,似乎 spring 有一些问题来扫描 TypeDef。


推荐阅读