2014-12-02 6 views
0

У меня есть Spring проект, где я получить доступ к базе данных с использованием Spring Data REST (с использованием http://spring.io/guides/gs/accessing-data-rest/)Получить Макс значение столбца из БД в Hal-Json с использованием Spring Data REST

@RepositoryRestResource(collectionResourceRel = "test", path = "test") 
public interface TestRepository extends PagingAndSortingRepository<Test, Long> { 

    @Query("SELECT max(p.lastUpdatedDate) FROM Test p") 
    Date findLastUpdatedDate(); 
} 

Когда я пытаюсь получить доступ к Вышеописанный способ, чтобы получить дату MAX с помощью URL Localhost: 8080/тест/поиск/findLastUpdatedDate, я получаю ошибку

{"cause":null,"message":"Cannot create self link for class java.sql.Timestamp! No persistent entity found!"} 

Пожалуйста, подсказывают, как я могу получить максимальную lastUpdatedDate из таблицы Test. Благодаря!

Вот мой тест класс:

@Entity 
@Table(name="test") 
public class Test implements Serializable{ 

    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 
    private String col1; 
    private String col2; 
    private String status; 

    @Column(name = "last_updated_date") 
    private Date lastUpdatedDate; 

    // getters, setters, hashcode, equals, toString methods are written 
} 
+0

Вам действительно нужно вернуть тип даты из репозитория? Можете избежать ошибки, если вы вернете тип теста и просто прочитаете его lastUpdatedDate вместо –

+0

Мне нужен тип даты из репозитория (вывод, который мы получаем при запуске select max (last_updated_date) из теста: что-то вроде 2014-11-20) , Я попытался вернуть тестовый тип из репозитория, и, поскольку существует более 1 строка с максимальной датой в 2014-11-20, она вернула тип List . Но все, что я хотел, это дата MAX. Должен быть более простой способ получить Date из репозитория ... Не знаю, почему сама ссылка HAL-JSON дает эту проблему. Я огляделся вокруг, но не повезло ... – mona

ответ

0

Вы должны использовать @Temporal аннотацию по датам.

Вы также должны использовать java.util.Date или Joda время вместо java.sql.Timestamp

Spring Data JPA также имеет встроенные создания/редактирования меток времени, так что вы должны смотреть на это:

http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#auditing

+0

Спасибо за ваш ответ! Когда я изменил его на дату JODA, это ошибка, которую я получаю: {"cause": null, "message": "Невозможно создать собственную ссылку для класса org.joda.time.LocalDate! Нет постоянной записи!"} Эта ошибка также показывает, когда у меня есть объект репозитория, возвращающий объект String вместо объекта Test. Так что, похоже, Hal-Json не может создать собственную ссылку. – mona

+0

Работает ли w java.util.Date? –

+0

НЕТ, я попробовал java.util.Date, а также .. – mona

Смежные вопросы