Spring中如何通过CrudRepository的`findAll()`方法在序列化中包含恢复对象的id?
Posted
技术标签:
【中文标题】Spring中如何通过CrudRepository的`findAll()`方法在序列化中包含恢复对象的id?【英文标题】:How to include in serialization the id of the recovered objects through the `findAll()` method of CrudRepository in Spring? 【发布时间】:2015-01-05 07:17:52 【问题描述】:我有以下实体类:
@Entity
public class GameSet
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String question;
.......
这是我的存储库:
@Repository
public interface GameSetRepository extends CrudRepository<GameSet, Long>
这是我的控制器的相关部分:
...
@RequestMapping(value = "/test/getgamesets", method = RequestMethod.GET)
public @ResponseBody Collection<GameSet> getGameSets()
return Lists.newArrayList(gamesets.findAll());
...
这是服务器响应:
"question": "Choose one of the following, which is wrong.",
"title1": "MovieA",
"title2": "MovieB",
"title3": "MovieC",
"title4": "MovieD",
"wrong": 1,
"explain": "I don't know why this is wrong.",
"rates": 0,
"rate": 0
除了其他属性之外,我还想在请求结果中获取对象的 id。
我应该重写findAll()
方法吗?
感谢您的关注和时间!
【问题讨论】:
这完全取决于您如何将实体转换为 JSON,也可能取决于实体的代码。它与 CrudRepository 无关。 感谢您的回答!你的意思是这样link? 也许,也许不是。我不知道您是否正在使用 Spring-data-rest 以及此答案是否适用于您的应用程序。 这是 spring-data-rest 吗? 【参考方案1】:我只是在上一个链接中的 Application 类中添加以下代码:
@Configuration
public static class RepositoryConfig extends RepositoryRestMvcConfiguration
@Override
protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config)
config.exposeIdsFor(GameSet.class);
它的工作原理!感谢 JB Nizet 让我明白我的问题所在!
【讨论】:
查看this,以防您需要公开所有实体的标识符,或者仅针对那些扩展或实现特定超类或接口的实体。以上是关于Spring中如何通过CrudRepository的`findAll()`方法在序列化中包含恢复对象的id?的主要内容,如果未能解决你的问题,请参考以下文章
通过 HTTP 保护 Spring Data RepositoryRestResource (CrudRepository),但不在内部
如何在 Spring Boot CrudRepository 中搜索数组
Spring CrudRepository deleteAll()什么都不做
如何在 Spring Data JPA CRUDRepository 中添加缓存功能
使用 Spring Data JDBC 和 CrudRepository 接口的多个数据源
如何在不使用 CrudRepository 的情况下将 java spring boot 应用程序中定义的实体反映在数据库中