我有两个具有相同字段的类。但是,一个是JSON 另一个是JPA实体。我想转换JSON 对象(学生)进入JPA实体(StudentEntity)。我试着解析 JSON类进入JPA类,但它不允许。如何将(Student)Json类转换为(StudentEntity)类,以便我可以使用JSON类中的信息在JPA实体类中保留数据库?
package com.student.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "Student")
public class StudentEntity implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(nullable = false, updatable = false)
@GeneratedValue
private long studentID;
private String fName;
private String lName;
private Address address;
public long getStudentID() {
return studentID;
}
public void setStudentID(long studentID) {
this.studentID = studentID;
}
public String getfName() {
return fName;
}
public void setfName(String fName) {
this.fName = fName;
}
public String getlName() {
return lName;
}
public void setlName(String lName) {
this.lName = lName;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
package com.ejb.objectmapper.entity.student;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonIgnoreProperties("studentID")
public class Student {
private long studentID;
@JsonProperty
private String fName;
@JsonProperty
private String lName;
private Address address;
public long getStudentID() {
return studentID;
}
public void setStudentID(long studentID) {
this.studentID = studentID;
}
public String getfName() {
return fName;
}
public void setfName(String fName) {
this.fName = fName;
}
public String getlName() {
return lName;
}
public void setlName(String lName) {
this.lName = lName;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
答案 0 :(得分:0)
你可以使用一些Mapping-Framework,即Dozer(http://dozer.sourceforge.net)或MapStruct(http://mapstruct.org)
使用Dozer复制类可以归结为像
这样简单的东西dozer.map(jsonObject,Entity.class);
答案 1 :(得分:0)
你在为MVC使用什么?如果使用Spring MVC,则可以使用JPA实体来表示JSON有效内容。适合我们。只需使用杰克逊注释来控制行为,例如@JsonIgnore
。
您不需要两个课程。
答案 2 :(得分:0)
另一种方法是将Mixin feature用于杰克逊。
这实际上可以让你摆脱Student
类(如果可能的话),并将JSON直接解组到StudentEntity
类的新实例。
这种方法在很大程度上取决于您的Web应用程序的复杂程度,以及您坚持使用DTO模式的依赖程度。 Spring Data REST非常成功地做到了这一点。事实上,既然你已经在使用JPA,我会推荐它(如果它适合你的使用案例),并且,和很多东西一样,你可以获得很多东西免费'