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", ...
我正在尝试 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", ...