【问题标题】:Kotlin & Hibernate IllegalArgumentException: Can not set String field Job.name to JobKotlin & Hibernate IllegalArgumentException:无法将字符串字段 Job.name 设置为 Job
【发布时间】:2017-10-22 07:54:13
【问题描述】:

我正在尝试将具有休眠功能的单个对象持久保存到 postgres 数据库中。该类如下所示:

@Entity
@Table(name = "jobs")
data class Job(
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    var id: Int? = 0,
    var name: String? = ""
)

我使用以下代码创建了一个休眠会话:

fun createSessionFactory(targetClass: Class<*>): SessionFactory? {
    val registryBuilder = StandardServiceRegistryBuilder()

    if (sessionFactory == null) {
        val configuration = hashMapOf(
                Environment.DRIVER to "org.postgresql.Driver",
                Environment.URL to "jdbc:postgresql://localhost:5432/testdb",
                Environment.DIALECT to "org.hibernate.dialect.PostgreSQL9Dialect",
                Environment.USER to "user",
                Environment.PASS to "password",
                Environment.HBM2DDL_AUTO to "create"
        )


        registryBuilder.applySettings(configuration)
        serviceRegistry = registryBuilder.build()

        val sources = MetadataSources(serviceRegistry)
        sources.addAnnotatedClass(targetClass)
        val metadata = sources.metadataBuilder.build()

        sessionFactory = metadata.sessionFactoryBuilder.build()
    }
    return sessionFactory
}

当我尝试使用以下方式存储作业类的实例时:

override fun persistEntity(entity: Job) {
    val session = databaseSession.createSessionFactory(Job::class.java)!!.openSession()
    session.beginTransaction()
    session.save(entity)

    session.transaction.commit()
    session.close()
    databaseSession.destroySession()
}

我收到异常 java.lang.IllegalArgumentException: Can not set java.lang.String field Job.name to Job。

所有这些都是在具有多个模块的 Spring Boot 应用程序中实现的。为了确保模块之间的依赖关系没有问题,我在另一个项目中重新创建了结构,并且相同的代码可以按预期工作。

有人知道我在这里缺少什么吗?

【问题讨论】:

    标签: java spring postgresql hibernate kotlin


    【解决方案1】:

    我终于让它工作了。事实证明,spring devtools 不知何故与 kotlin 和 hibernate 发生冲突。从项目中删除它们后,一切正常。

    【讨论】:

      猜你喜欢
      • 2018-08-27
      • 2013-02-05
      • 2017-02-18
      • 2017-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多