В настоящее время я работаю над POC для Spring Data Rest. Попытка получить работоспособный JSON из репозитория.
У меня есть класс сущностей (NewTask)
@Entity
@Table(name="newtable")
public class NewTask {
@Id
@Column(name="newid")
private int id;
@Column(name="newage")
private int age;
@Column(name="newaddress")
private String address;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
и соответствующий репозиторий..
@RepositoryRestResource
@PreAuthorize("hasRole('ROLE_ADMIN')")
public interface NewTaskRepository extends CrudRepository<NewTask, Serializable>{
@Query("SELECT t.address FROM NewTask t where t.id = :id")
String findByMyId(@Param("id") int id);
}
всякий раз, когда я ударяю
http://localhost:8080/POCDB/newTasks/search/findByMyId?id=1
Я получаю следующую ошибку: {"cause":null,"message":"PersistentEntity не должен быть null!"}
Теперь вот как выглядит мой репозиторий: Пожалуйста, прочтите комментарии к каждому методу.
//Gives- PersistentEntity must not be null!!!
@Query("SELECT t.address FROM NewTask t where t.id = :id")
String findByMyId(@Param("id") int id);
//WORKS FINE
@Query("SELECT t.id FROM NewTask t where t.id = :id")
int findId(@Param("id") int id);
//WORKS FINE
@Query("SELECT t.id FROM NewTask t where t.id = :id")
Integer findIdTwo(@Param("id") int id);
//Gives- PersistentEntity must not be null!!!
@Query("SELECT t.id FROM NewTask t")
List<Integer> findIds();
Я не уверен, каковы проблемы с возвращаемыми типами. Я ссылался на ссылку ниже для некоторого решения:
Как можно создать собственный запрос в jparepository, но вернуть объект, отличный от сущности?
и добавил еще 2 метода в мой репозиторий, которые у меня не работают
// returns in some weird format
@Query("SELECT t.address FROM NewTask t where t.id = :id")
PString findByMyId(@Param("id") int id);
//Gives- PersistentEntity must not be null!!!
@Query("SELECT t.address FROM NewTask t")
List<PString> findAddress();
У меня есть подозрение, что это ошибка в SDR, или я что-то упустил?