当我在Spring Boot中使用@query anotation运行以下查询时,它会返回正确的结果:
SELECT p FROM Collection p WHERE LOWER(p.description) LIKE LOWER(CONCAT('%',:searchTerm, '%'))
{
"_embedded": {
"collections": [
{
"place": "Blessington",
"description": "Collection of old shoes for recycling",
"_links": {
"self": {
"href": "http://localhost:8080/collections/1"
},
"collection": {
"href": "http://localhost:8080/collections/1"
}
}
}
]
},
"_links": {
"self": {
"href": "http://localhost:8080/collections/search/findByDescription?searchTerm=shoe"
}
}
}
当我尝试指定要返回的字段时:
SELECT p.description FROM Collection p WHERE LOWER(p.description) LIKE LOWER(CONCAT('%',:searchTerm, '%'))
我收到以下错误:
{
"cause": null,
"message": "PersistentEntity must not be null!"
}
如何在Spring Data中使用@query注释指定要返回的字段?
答案 0 :(得分:1)
是的,似乎Manish发布链接的问题有答案。
答案:你不能。
Spring数据将返回整个实体,而不是单个字段。你无法做到这一点。如果你想这样做,你必须使用投影。见链接帖子。
谢谢@Manish
答案 1 :(得分:0)
建议的链接并未完全涵盖所有可能性。
从Spring Data的Hopper版本中,可以直接从Query方法直接返回Projections:
所以你可以这样做:
{{1}}