코틀린에서 JPA 사용시 ID 에 val 사용하기
TL;DR
JPA 에서 ID 에 val
을 사용해도 save
이후 ID 가 잘 설정된다.
코드 예제
Member.kt
@Entity
class Member(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long = 0L,
@Column(
name = "name",
length = 30,
nullable = false,
)
var name: String,
)
MemberRepository.kt
@Repository
interface MemberRepository : JpaRepository<Member, Long>
사용처
val member = Member(name = "홍길동") // member.id = 0
val savedMember = memberRepository.save(member) // savedMember.id = 1
println(member.id) // member.id = 1
보는 바와 같이 val
로 id 를 설정하였어도 save
이후에 id 값이 잘 설정된다.
하지만 일반적으로 val
은 값이 변한다고 생각하지 않기 때문에 값을 저장한 이후에는 member
대신 savedMember
를 사용하는 것이 좋아 보인다.
다른 게시물 읽기