kotlin-jpa 插件不生成默认构造函数

Posted

技术标签:

【中文标题】kotlin-jpa 插件不生成默认构造函数【英文标题】:kotlin-jpa plugin not generating default constructor 【发布时间】:2019-08-09 06:24:09 【问题描述】:

我正在使用 kotlin-jpa 为我的 kotlin 实体生成默认构造函数,但是没有生成:

我刚用过:

id("org.jetbrains.kotlin.plugin.jpa") version "1.3.21"


@Entity
data class PlanSubscription(@Id ...

但是使用 kotlin-jpa 插件的事件没有生成构造函数:

No default (no-argument) constructor for class

【问题讨论】:

您不应该为实体使用数据类:toString/hashCode/equals 不适合实体,实体应该开放以支持基于动态代理的延迟加载。 @Guilherme Torres Castro 问题的状态如何? @Skizo-ozᴉʞS 抱歉耽搁了。我犯了一个错误并粘贴了错误的插件kotlin.jvm而不是kotlin jpa。我编辑问题以反映我已经在使用 kotlin jpa 插件,但没有生成无参数构造函数。 您需要定义一个空的构造函数,能否请您为您的类添加一个默认构造函数并再试一次? @Skizo-ozᴉʞS 但这就是 kotlin-jpa 应该做的事情 【参考方案1】:

我有一个非常相似的问题。虽然不使用数据类的建议可能有用也可能没有用,但我发现有问题的是 jpa 插件的版本,请尝试使用 1.3.41 版

id "org.jetbrains.kotlin.plugin.jpa" version "1.3.41"

【讨论】:

【参考方案2】:

你需要设置

`<dependency>
   <groupId>org.jetbrains.kotlin</groupId>
   <artifactId>kotlin-reflect</artifactId>
   <version>1.1.0</version>
</dependency>` 

在你的 pom.xml 中

【讨论】:

以上是关于kotlin-jpa 插件不生成默认构造函数的主要内容,如果未能解决你的问题,请参考以下文章

如何使用默认构造函数和设置器生成 pojo

如何开发插件实现vs快速生成构造函数

扩展1

编译器自动生成默认构造函数的四种情况

constructor&object 的联系与对比

为啥并不总是有默认构造函数[重复]