2017-10-22 11 views
0

hibernateを持つ単一のオブジェクトをpostgres dbに永続化しようとしています。KotlinとHibernate IllegalArgumentException:StringフィールドJob.nameをJobに設定できません

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() 
} 

:とジョブ・クラスのOB、私はインスタンスを保存しようとすると

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 
} 

:私は次のコードでHibernateセッションを作成

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

:クラスは、このようになります。 java.lang.IllegalArgumentException:java.lang.StringフィールドJob.nameをJobに設定できません。

これは、複数のモジュールを持つスプリングブートアプリケーション内で実装されています。モジュール間の依存関係に問題がないことを確認するために、私は他のプロジェクトの構造を再作成し、同じコードが期待通りに機能します。

誰も私がここで何が欠けているのか考えていますか?

答えて

0

私はついにそれを働かせました。それは、春のdevtoolsが何とかkotlinやhibernateと競合していることが判明しました。プロジェクトからそれらを削除した後、すべてがうまくいく。

関連する問題