Kotlin&Hibernate IllegalArgumentException:无法将字符串字段Job.name设置为Job
我试图坚持一个单一的对象与hibernate到Postgres数据库。 这个类看起来像这样:
@Entity @Table(name = "jobs") data class Job( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) var id: Int? = 0, var name: String? = "" )
我用下面的代码创建一个hibernate会话:
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() }
我得到的exceptionjava.lang.IllegalArgumentException:无法设置java.lang.String字段Job.name作业。
所有这些都是在具有多个模块的弹簧引导应用程序内部实现 为了确保模块之间的依赖关系没有问题,我在其他项目中重新创建了结构,并且有相同的代码按预期工作。
有没有人有一个想法,我在这里失踪?
我终于搞定了。 原来,spring的devtools莫名其妙地与kotlin和hibernate冲突。 从项目中删除他们后,一切工作很好。