home wiki.fukuchiharuki.me
Menu

  • 追加された行はこの色です。
  • 削除された行はこの色です。
#author("2023-01-12T07:47:58+00:00","default:haruki","haruki")
* キーワード [#hc7c5f18]
- JPA
- Spring Boot
- Kotlin

* したいこと [#ya88d2e3]

ひとまず最小で基本的な関連と永続化処理を実装したい。

* エンティティ [#u812d77a]

** モデル [#dda697ef]

 @Entity
 @Table
 class Foo(
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   var id: Long = -1,
 
   var name: String = "", 
 
   var status: StatusType = StatusType.TEMPORARY_REGISTRATION
 )

*** エンティティにはIDが必要 [#c49b023b]

JPAのエンティティはID(プライマリキー)を持つ、のが基本。

 detached entity passed to persist spring jpa

** 永続化処理 [#tf12ecc5]

 val entity = Foo(name = "foo", status = StatusType.TEMPORARY_REGISTRATION)
 entityManager.persist(entity)

*** Kotlinで実装する場合デフォルト値の定義が必要 [#l1e04d92]

Kotlinでエンティティを実装する場合、デフォルト値を定義しておく必要がある。デフォルト値を定義しておかないと、エンティティ永続化時にエラーが発生する。永続化時に値があるかどうかではないことに注意。

* 1対多(集約等)の関係 [#g2c10fb2]

TBC

* 多対1(イベント等)の関係 [#w9a9673b]

TBC

* 1対1(カーソル等)の関係 [#k9483d82]

TBC

* 参考 [#sf4400b4]
- [[java - How to use spring Repository without @Id? - Stack Overflow:https://stackoverflow.com/a/29561919]]
- [[エンティティの状態遷移:http://itdoc.hitachi.co.jp/manuals/link/cosmi_v0870/APKC/EU070301.HTM]]