Я пытаюсь получить дату метки времени из базы данных оракула, но код выдает:
java.lang.IllegalArgumentException: тип проекции должен быть интерфейсом!
Я пытаюсь использовать собственный запрос, потому что исходный запрос слишком сложен для использования методов Spring JPA или JPQL.
Мой код похож на приведенный ниже (Извините, не могу вставить оригинальныйодин из-за политики компании).
Объект:
@Getter
@Setter
@Entity(name = "USER")
public class User {
@Column(name = "USER_ID")
private Long userId;
@Column(name = "USER_NAME")
private String userName;
@Column(name = "CREATED_DATE")
private ZonedDateTime createdDate;
}
Проекция:
public interface UserProjection {
String getUserName();
ZonedDateTime getCreatedDate();
}
Репозиторий:
@Repository
public interface UserRepository extends CrudRepository<User, Long> {
@Query(
value = " select userName as userName," +
" createdDate as createdDate" +
" from user as u " +
" where u.userName = :name",
nativeQuery = true
)
Optional<UserProjection> findUserByName(@Param("name") String name);
}
Я используюSpring Boot 2.1.3 и Hibernate 5.3.7.