有一个奇怪的问题,无法弄清楚如何处理。有简单的POJO:
@Entity
@Table(name = "persons")
public class Person {
@Id
@GeneratedValue
private Long id;
@Column(name = "first_name")
private String firstName;
@Column(name = "middle_name")
private String middleName;
@Column(name = "last_name")
private String lastName;
@Column(name = "comment")
private String comment;
@Column(name = "created")
private Date created;
@Column(name = "updated")
private Date updated;
@PrePersist
protected void onCreate() {
created = new Date();
}
@PreUpdate
protected void onUpdate() {
updated = new Date();
}
@Valid
@OrderBy("id")
@OneToMany(mappedBy = "person", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
private List<PhoneNumber> phoneNumbers = new ArrayList<>();
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getMiddleName() {
return middleName;
}
public void setMiddleName(String middleName) {
this.middleName = middleName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public Date getCreated() {
return created;
}
public Date getUpdated() {
return updated;
}
public List<PhoneNumber> getPhoneNumbers() {
return phoneNumbers;
}
public void addPhoneNumber(PhoneNumber number) {
number.setPerson(this);
phoneNumbers.add(number);
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}
@Entity
@Table(name = "phone_numbers")
public class PhoneNumber {
public PhoneNumber() {}
public PhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
@Id
@GeneratedValue
private Long id;
@Column(name = "phone_number")
private String phoneNumber;
@ManyToOne
@JoinColumn(name = "person_id")
private Person person;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}
其余端点:
@ResponseBody
@RequestMapping(method = RequestMethod.GET)
public List<Person> listPersons() {
return personService.findAll();
}
在json响应中,除了Id之外,还有其他所有字段,我需要在前端编辑/删除人员。如何配置Spring Boot来序列化ID?
这就是现在的响应:
[{
"firstName": "Just",
"middleName": "Test",
"lastName": "Name",
"comment": "Just a comment",
"created": 1405774380410,
"updated": null,
"phoneNumbers": [{
"phoneNumber": "74575754757"
}, {
"phoneNumber": "575757547"
}, {
"phoneNumber": "57547547547"
}]
}]
UPD具有双向hibernate映射,可能与问题有关。
我最近遇到了同样的问题,这是因为spring-boot-starter-data-rest
默认情况下是这样工作的。请参阅我的SO问题-> 在将应用程序迁移到Spring Boot后使用Spring Data Rest时,我发现带有@Id的实体属性不再编组为JSON
要自定义其行为,可以扩展RepositoryRestConfigurerAdapter
以公开特定类的ID。
import org.springframework.context.annotation.Configuration;
import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurerAdapter;
@Configuration
public class RepositoryConfig extends RepositoryRestConfigurerAdapter {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
config.exposeIdsFor(Person.class);
}
}
有一个奇怪的问题,想不出该怎么处理。有简单的POJO: UPD有双向Hibernate映射,也许它与问题有关。
我读过一些关于hibernate的话题 “如果实体实例作为分离对象通过值传递,例如通过会话bean的远程业务接口,则类必须实现可序列化接口。”(c) 我有:使用Hibernate的简单Spring MVC项目。我有MyEntityDataTable,并且可以通过应用程序中的用户编辑它。 > 用户向getMyEntity()发出请求,并获取空的MyEntity对象 然后在表单中他设置了所有需要的参数
问题内容: 我正在尝试使用symfony序列化程序组件反序列化具有关系的实体。这是我的实体: 和 流派实体 : 现在在我的 控制器操作中, 我正在尝试以下操作: 还有我的 json数据 : 但是我得到了下一个 错误 : 给定类型为“ AppBundle \ Entity \ Genre”,“ array”的预期参数(500内部服务器错误) 是否可以使用内部具有关系的实体反序列化json请求? 感谢
问题内容: 有谁知道那里是否有一个能够从实体类中剥离Hibernate集合以使其可序列化的框架?我看了一下BeanLib,但它似乎只做实体的深层副本,而不允许我为实体类中的集合类型指定实现映射。BeanLib当前不适用于Hibernate 3.5和Spring 3(我确实修改了源代码并能够使其正常工作,但我不想这样做)。吉利德(Gilead)似乎是一个选择,但似乎颇具侵略性。我宁愿使用简单的深度复
本文向大家介绍SpringBoot Redis配置Fastjson进行序列化和反序列化实现,包括了SpringBoot Redis配置Fastjson进行序列化和反序列化实现的使用技巧和注意事项,需要的朋友参考一下 FastJson是阿里开源的一个高性能的JSON框架,FastJson数据处理速度快,无论序列化(把JavaBean对象转化成Json格式的字符串)和反序列化(把JSON格式的字符串转
问题内容: 我想通过实施将其序列化为Json 该映射序列化为非标准。我想在单元测试中测试此行为。 问题答案: 你不能像这样测试。你在这里做什么 正在建立 出站 响应。在JAX-RS框架中,发出响应后,例如 它仍然需要通过序列化到JSON。 阅读有关实体提供者的更多信息 话虽如此,泽西岛有一个测试框架,我们可以用来测试我们的资源方法。您可以在Github上找到所有官方示例 一个样本(有一些改动):