skill/Java.Kotlin

[kotlin] JPA PK 2개 이상 일 때, 설정 및 조회

have a nice day :D 2021. 5. 12. 09:04
반응형

PK가 2개 인 test 테이블을 만들었습니다.

CREATE TABLE test (
    test_id	varchar(20)	NOT NULL,
    mber_id	varchar(20)	NOT NULL,
    cre_date	datetime	NOT NULL,
    mod_date	datetime	NULL,
    PRIMARY KEY (test_id, mber_id)
);

PK는 따로 data class로 만들어 줍니다.

import java.io.Serializable
import javax.persistence.Embeddable

@Embeddable
data class TestEntityPK(var testId: String,
                  var mberId: String): Serializable

 

test 테이블 data class. 

import lombok.Getter
import lombok.Setter
import java.time.LocalDateTime
import javax.persistence.Entity
import javax.persistence.EmbeddedId


@Getter
@Setter
@Entity
data class TestEntity(@EmbeddedId
                        var id: TestEntityPK,
                        var creDate: LocalDateTime,
                        var modDate: LocalDateTime?)

 

Repository 구성

import org.springframework.data.jpa.repository.JpaRepository

interface TestRepository: JpaRepository<TestEntity, TestEntityPK> {
	fun findByIdTestId(testId: String): List<TestEntity>?
}

 

사용 법

@Autowired
lateinit var testRepository: TestRepository
    
    
fun getTestId(testId: String): List<TestEntity>? {
    return testRepository.findByIdTestId(testId: String)
}
    
fun save(testId: String, mberId: String) {
    testRepository.save(TestEntity(TestEntityPK(testId, mberId), LocalDateTime.now()))
}

 

반응형