Я пробовал много способов, и я подробно размещаю свою проблему.Hibernate @onetomany круговая контрольная ошибка с Gson
Вот мой родительский класс
@Entity
@Table(name = "Project")
//@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "@id")
public class Project implements Serializable{
@Expose
int id;
@Expose
String projectName;
@Expose
String userID;
// Date dateCreated;
@Expose
String dateCreated;
@Expose
String status;
@Expose
String houseType;
@Expose
private List<UnitDetails> unitDetails = new ArrayList<>();
@Expose
private List<RoomDetails> roomDetails = new ArrayList<>();
@GeneratedValue
@Column(name = "id")
public int getId() {
return id;
}
@OneToMany(mappedBy="unitDetails", fetch = FetchType.LAZY)
public List<UnitDetails> getUnitDetails() {
return unitDetails;
}
public void setUnitDetails(List<UnitDetails> unitDetails) {
this.unitDetails = unitDetails;
}
@OneToMany(mappedBy="roomDetails", fetch = FetchType.LAZY)
public List<RoomDetails> getRoomDetails() {
return roomDetails;
}
public void setRoomDetails(List<RoomDetails> roomDetails) {
this.roomDetails = roomDetails;
}
Вот мои дочерние классы
@Entity
@Table(name="Unit_Details")
//@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "@id")
public class UnitDetails {
@Expose
int unitDetailsID;
@Expose
int designID;
@Expose
String unit;
@Expose
double length;
@Expose
double breadth;
@Expose
double height;
@Expose
String img;
@Expose
String type;
@Expose
String color;
@JsonIgnore
private Project unitDeTails;
@Id
@GeneratedValue
@Column(name="unitDetailsID", unique=true, nullable=false)
public int getUnitDetailsID() {
return unitDetailsID;
}
@ManyToOne
@JoinColumn(name="id", insertable=true, updatable=false)
public Project getUnitDetails() {
return unitDeTails;
}
public void setUnitDetails(Project unitDetails) {
this.unitDeTails = unitDetails;
}
Вот мой контроллер
public class ProjectController extends ActionSupport implements
ModelDriven<Object> {
public HttpHeaders index() {
model = objProjectDAOImpl.getProjectDetails(userID);
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
System.out.println(gson.toJson(model));
model = gson.toJson(model);
return new DefaultHttpHeaders("index").disableCaching();
}
я смог сохранить детали должным образом без каких-либо циклическая ошибка. Когда я пытаюсь получить, я получил циклическую ошибку ссылки. Тогда я использовал Gson выставить только необходимые поля, и теперь я получаю ошибку ниже
HTTP Status 500 - A JSONObject text must begin with '{' at character 1 of
Я понимаю, что это не формат JSON, но я думал, что GSON будет заботиться об этом или дайте мне знать, что я должен использовать другой способ исправить это
Он отображает результат, который выглядит как массив [{"id": 139, "projectName": "ABCD", "unitDetails": [{"unitDetailsID": 575, ......
уродливое исправление будет добавлено {в начале вывода и} в конце вывода – Satya
Если это так, я пойду с нижним, которое обязательно отправит JSON, но я хотел бы знать, что я отсутствует здесь с GSON Строка json = gson.toJson (listProject); model = json.substring (1, json.length() - 1); – CrazyMac
Если я просто пытаюсь вернуть модель, как показано ниже, то я получаю иерархии Issue \t индекс общественного HttpHeaders() { \t \t модель = objProjectDAOImpl.getProjectDetails (USERID); \t \t return new DefaultHttpHeaders ("index"). DisableCaching(); \t} net.sf.json.JSONException: В иерархии есть цикл! – CrazyMac