You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中使用TypeDefs注解?及Java代码转Kotlin等效实现问询

在Kotlin中使用@TypeDefs注解及Java代码转Kotlin实现

一、Kotlin里使用@TypeDefs注解的要点

在Kotlin中使用JPA/Hibernate的@TypeDefs注解,核心逻辑和Java一致,但语法上有几个小细节要注意:

  • 注解的数组参数可以直接把多个@TypeDef实例用逗号分隔,不用像Java那样套大括号
  • 引用类的时候要用::class替代Java里的.class
  • 要是想实现Java里@Data的效果,用Kotlin原生的data class会更简洁(当然也可以继续保留Lombok的@Data注解)

二、你的Java代码的等效Kotlin实现

结合你提到的开头,完整的可运行等效代码如下:

@Data
@Entity
@TypeDefs(
    TypeDef(name = "string-array", typeClass = StringArrayType::class),
    TypeDef(name = "int-array", typeClass = IntArrayType::class),
    TypeDef(name = "json", typeClass = JsonStringType::class),
    TypeDef(name = "jsonb", typeClass = JsonBinaryType::class)
)
data class Parent(
    // 在这里补充你的实体属性,比如:
    // @Id
    // val id: Long? = null
) : Serializable

补充说明

  • 用Kotlin的data class会自动生成equals、hashCode、toString等方法,完全替代@Data的功能,更符合Kotlin的最佳实践
  • 实现Serializable接口直接用: Serializable即可,不用像Java那样写implements Serializable
  • 所有注解的参数逻辑和Java完全一致,只是类引用的语法做了适配

内容的提问来源于stack exchange,提问作者BigFatSea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:13:58