JSON 不返回 Spring 数据 REST 中的列

JSON not returning columns in Spring Data REST

我正在尝试 Spring Data REST 的示例,但是在我的测试中 JSON 对象 return 没有 return 列名(早先 'PUT') 并且只有 returns 指向对象的链接。有什么问题吗?

Scenario:

实体:'User'

@Entity
@Data
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;
    private String guid;
    private String fullName;
    private String email;
}

存储库:UserRepository(公开为 REST 服务)

@RepositoryRestResource(collectionResourceRel = "users", path = "users")
public interface UserRepository extends JpaRepository<User, Long> {
}

REST 'PUT' 请求创建 USER 对象:

REST GET 调用以获取用户对象的 JSON 响应(问题)

No id, Guid or email is returned in the JSON response.

删除 lombok 的 @Data 注释使所有基本属性都出现在 JSON 响应中。看起来像龙目岛的副作用。

我遇到了同样的问题,但我没有使用自动生成的 Lombok classes。

我找到了解决办法。我遇到的问题是只有链接出现在 Spring 数据存储库的 json 输出中。

例如:

 {
      "_embedded": {
        "users": [{
              "_links": {
                "self": {
                  "href": "http://localhost:8080/users/1"
                },
                "user": {
                  "href": "http://localhost:8080/users/1"
                }
              }
            }, {
              "_links": {
                "self": {
                  "href": "http://localhost:8080/users/2"
                },
                "user": {
                  "href": "http://localhost:8080/users/2"
                }
              }
            }, {
              "_links": { ...

解决方法:

getters 和 setters 添加到实体,每个变量对应一个要在响应中显示的变量。添加 getter 和 setter 后,您将能够再次 运行 应用程序,并获得 json 包含每个变量值的响应。

在其他答案之一中,解决方法是删除 Lombok @Data 注释。 Lombok 没有及时使用该注释为 class 生成 getter 和 setter,因此返回的 JSON 响应中的 none 包含任何初始化值。

结果看起来更好: {

  "_embedded" : {
    "users" : [ {
      "username" : "admin",
      "firstName" : "Administrator",
      "lastName" : "Administrator",
      "roles" : [ { "roleName" : "ROLE_ADMIN", "description" : "Administrator"
      } ],
      "_links" : { "self" : { "href" : "http://localhost:8080/users/1" },
        "user" : { "href" : "http://localhost:8080/users/1" }
      }
    }, {
      "username" : "bobby", ...