
jpa
KotlinでJPA使用時にデフォルトコンストラクタ要求を回避する
KotlinでJPAを使用する場合、エンティティクラスにデフォルトコンストラクタが存在しないと、以下のような例外がスローされます。org.springframework.orm.jpa.JpaSystemException:Nodefaultconstructorforentity::..;nestedexceptionisorg.hibernate.InstantiationException:Nodefaultconstructorforentity::..これはJPA実装のひとつであるHibernateが、エンティティクラスのインスタンス生成時に、引数付きコンストラクタではなく、デフォルトコンストラクタを使おうとするために発生する例外ですが、Kotlinでは、コンストラクタとプロパティを一緒に記述できるため、多くの場合デフォルトコンストラクタが用意されません。Kotlinでデフォルト2019.02.26
Jacksonシリアライズの循環参照を止める
Jacksonを使用したJSONの出力で、オブジェクトが循環参照を起こしているような場合、これを止める方法についてのメモ。以下のように、JsonIdentityInfoアノテーションをクラスにつけるだけで良いです。これを使用することで、循環が検出された場合に、循環しているオブジェクトの内容を、ID文字列に置き換えてくれるようになります。JPAエンティティなどをそのままJSON出力したいような場合には、OneToMany,ManyToOneを使用したオブジェクトの参照で、このようなニーズが度々発生します。@Entity@JsonIdentityInfo(property="_id",generator=ObjectIdGenerators.UUIDGenerator::class)dataclassPerson(@Idvarid:String="",varname:String="",@On2018.01.25


