Исключение при попытке использовать проекцию для объекта со свойством типа clob в данных SpringJAVA

Программисты JAVA общаются здесь
Anonymous
Исключение при попытке использовать проекцию для объекта со свойством типа clob в данных Spring

Сообщение Anonymous »

Существует объект со свойством CLOB:

Код: Выделить всё

@Entity
public class Person {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

private String firstName;
private String lastName;

@Column(columnDefinition = "clob")
@Lob
private String description;

//getters and setters here
}
Теперь мне хотелось бы иметь метод, который может возвращать только часть этого класса, поэтому вот класс проекции:

Код: Выделить всё

public interface PersonProjection {
String getLastName();
String getDescription();
}
и репозиторий:

Код: Выделить всё

@Repository
public interface PersonRepository extends PagingAndSortingRepository
 {

@Query(value = "select pe.last_name as lastName, pe.description from person pe where pe.last_name = :lastName", nativeQuery = true)
List findAllByLastName(@Param("lastName") String lastName);
}
Использование собственного запроса в этом примере не требуется, но в моем случае я хотел бы вызвать функцию Oracle в предложенииwhere (

Код: Выделить всё

JSON_TEXTCONTAINS
, если быть точным).

Теперь использование этого репозитория в контроллере приводит к:

Код: Выделить всё

Could not write JSON: Projection type must be an interface!; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Projection type must be an interface! (through reference chain: java.util.ArrayList[0]->com.sun.proxy.$Proxy103[\"description\"])
Похоже, что исключение вызвано тем, что запрос возвращает поле описания как экземпляр интерфейса java.sql.Clob, но в классе проекции это поле определяется как String. Исключение не создается, когда класс сущности используется в качестве типа возвращаемого значения из метода репозитория (и там описание также определяется как строка).

Полный проект по устранению этой проблемы можно найти здесь.


Подробнее здесь: https://stackoverflow.com/questions/538 ... erty-in-sp

Вернуться в «JAVA»