Consider this entity

@Entity
@Table(name = "project")
class ProjectJpa(

    @Id
    @GeneratedValue(strategy = GenerationType.UUID)
    val id: ProjectId,

    @Column(name = "name", nullable = false)
    val name: String,
)

The id is defined as Kotlin value class that is just a wrapper for the UUID:

value class ProjectId(val id: UUID)

Define repo with ProjectId as id

@Repository
interface ProjectJpaRepository : JpaRepository<ProjectJpa, ProjectId>

With the above code project can be saved to database:

projectJpaRepository.save(project.toJpa())

Problem Retrieving project using findById...

projectJpaRepository.findById(ProjectId(UUID.fromString("1ec87062-89dd-4f75-a7a2-be7631332bbb")))

... results in 'org.springframework.dao.InvalidDataAccessApiUsageException' exception.:

Provided id of the wrong type for class com.mango.persistence.entity.ProjectJpa. Expected: 
class java.util.UUID, got class com.mango.business.model.value.ProjectId

Comment From: philwebb

Please make this suggestion to the Spring Data JPA team at https://github.com/spring-projects/spring-data-jpa/issues

Comment From: igorwojda

I did, thx. Reference