Я пытаюсь использовать положительные качества JPA и получать данные из БД в объект. Он отлично работает, когда JpaRepository использует простой класс в качестве ключа, но для тестовых случаев, когда класс ключа немного сложен, проверка jpa не выполняется даже для самых простых запросов.
использование native_query = true решит проблему, однако я не уверен, что делаю неправильно и чего мне не хватает.
MyTestPK.java:
package com.mytest.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Embeddable;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Embeddable
public class MyTestPK implements Serializable {
private String type;
private String name;
}
MyTest.java:
package com.mytest.model;
import lombok.Data;
import javax.persistence.*;
@Entity
@Table(name = "my_test")
@Data
@IdClass(MyTestPK.class)
public class MyTest {
@Id
@Column(name = "my_test_type", nullable = false)
private String type;
@Id
@Column(name = "my_test_name", nullable = false)
private String name;
@Column(name = "my_test_misc")
private String misc;
}
MyTestRepository.java:
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
@Repository
public interface MyTestRepository extends JpaRepository<MyTest, MyTestPK> {
@Query(value="SELECT m FROM MyTest m")
List<MyTest> getAllObjs();
}
Получение следующей ошибки:
....
Ошибка вызова метода init; вложенным исключением является java.lang.IllegalArgumentException: проверка не удалась для запроса для метода public abstract java.util.List
com.mytest.dao.MyTestRepository.getAllObjs ()!
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject (AutowiredAnnotationBeanPostProcessor.java:586) ~ [spring-beans-5.0.9.RELEASE.jar: 5.0.9]. RELE
в org.springframework.beans.factory.annotation.InjectionMetadata.inject (InjectionMetadata.java:90) ~ [spring-beans-5.0.9.RELEASE.jar: 5.0.9.RELEASE]