【发布时间】:2015-01-31 02:15:13
【问题描述】:
我有一个 Spring 项目,我使用 Spring Data REST 访问数据库(使用 http://spring.io/guides/gs/accessing-data-rest/)
@RepositoryRestResource(collectionResourceRel = "test", path = "test")
public interface TestRepository extends PagingAndSortingRepository<Test, Long> {
@Query("SELECT max(p.lastUpdatedDate) FROM Test p")
Date findLastUpdatedDate();
}
当我尝试使用 URL localhost:8080/test/search/findLastUpdatedDate 访问上述方法以获取 MAX 日期时,出现错误
{"cause":null,"message":"Cannot create self link for class java.sql.Timestamp! No persistent entity found!"}
请建议我如何从测试表中获取最大 lastUpdatedDate。谢谢!
这是我的测试类:
@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
}
【问题讨论】:
-
你真的需要从存储库中返回一个日期类型吗?如果您返回 Test 类型并仅读取其 lastUpdatedDate ,则可能会避免该错误
-
我需要存储库中的 Date 类型(我们在运行 select max(last_updated_date) from Test 时得到的输出:类似于 2014-11-20)。我试图从存储库返回一个测试类型,因为有超过 1 行的最大日期为 2014-11-20,最终返回一个 List
类型。但我想要的只是 MAX 日期。必须有一种更简单的方法来从存储库中获取日期......不知道为什么 HAL-JSON 自我链接会给出这个问题。我在 SO 中环顾四周,但没有运气......
标签: spring-data-jpa spring-data-rest spring-hateoas