我調試了代碼,變量「empresasucursal」嵌入了大量相同的信息,導致內存溢出。什麼是根據圖像的下方多對多jpa stackoverflow
數據庫模型涉及的類的正確方法[![empresa_sucursal] [1] [1]
級Java Empresa與
@Entity
@Table(name = "empresa")
public class Empresa implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="idempresa")
private Integer idempresa;
@javax.persistence.Temporal(TemporalType.TIMESTAMP)
private Date fechaRegistro;
@Column(name="direccionFiscal")
private String direccion;
private String nombre;
@Column(name="contactoTelefonoCelular")
private String celular;
@Column(name="regimenUnicoContribuyente")
private String ruc;
private String estado;
private String codigoEmpresa;
@OneToMany(mappedBy="empresa")
private List<EmpresaSucursal> empresaSucursal;
}
類Java的Sucursal
@Entity
@Table(name = "sucursal")
public class Sucursal implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "idsucursal")
private int idsucursal;
@Column(name = "nombreSucursal")
private String nombre;
private String direccion;
@Column(name = "contactoTelefonoFijo")
private String telefonoFijo;
private String fechaRegistro;
private String estado;
@Column(name = "codigoSucursal")
private String codigoSucursal;
@OneToMany(mappedBy = "sucursal")
private List<EmpresaSucursal> empresaSucursal;
}
級Java EmpresaSucursal
@Entity
@Table(name = "empresa_sucursal")
public class EmpresaSucursal implements Serializable {
@Id
@ManyToOne
@JoinColumn(name = "idempresa",referencedColumnName="idempresa")
private Empresa empresa;
@Id
@ManyToOne
@JoinColumn(name = "idsucursal" ,referencedColumnName="idsucursal")
private Sucursal sucursal;
@Column(name="estado")
private String estado;
}
控制器方法
@RequestMapping(method = RequestMethod.GET, value = "/{empresaId}", produces
= MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public Empresa obtenerEmpresa(@PathVariable Integer empresaId) throws
EmpresaNotExistException{
Empresa empresa =this.empresaRepository.findOne(empresaId);
System.out.println(empresa.toString());
return empresa;
}
ERROR在控制檯
017-04-17 10:05:10.442 WARN 9788 --- [NIO-8080-EXEC-1] .wsmsDefaultHandlerExceptionResolver:無法寫入HTTP 消息: org.springframework.http.converter.HttpMessageNotWritableException: 無法寫入內容:Infinite r ecursion(StackOverflowError) (通過引用鏈: com.gdata.auth.bean.Sucursal [「empresaSucursal」] - > org.hibernate.collection.internal.PersistentSet [0] - > com.gdata.auth.bean.EmpresaSucursal [ 「sucursal」] - > com.gdata.auth.bean.Sucursal [ 「empresaSucursal」] - > org.hibernate.collection.internal.PersistentSet [0] - > com.gdata.auth.bean.EmpresaSucursal [ 「sucursal」 ] - > com.gdata.auth.bean.Sucursal [ 「empresaSucursal」] - > org.hibernate.collection.internal.PersistentSet [0] - > com.gdata.auth.bean.EmpresaSucursal [ 「sucursal」] - >玉米.gdata.auth.bean.Sucursal [ 「empresaSucursal」] - > org.hibernate.collection.internal.PersistentSet [0] - > com.gdata.auth.bean.EmpresaSucursal [ 「sucursal」] - > com.gdata.auth .bean.Sucursal [ 「empresaSucursal」] - > org.hibernate.collection.internal.PersistentSet [0] - > com.gdata.auth.bean.EmpresaSucursal [ 「sucursal」] - > com.gdata.auth.bean.Sucursal [ 「empresaSucursal」] - > org.hibernate.collection.internal.PersistentSet [0] - > com.gdata.auth.bean.EmpresaSu cursal [ 「sucursal」] - > com.gdata.auth.bean.Sucursal [ 「empresaSucursal」] - > org.hibernate.collection.internal.PersistentSet [0] - > com.gdata.auth.bean.EmpresaSucursal [「sucursal 「] - > com.gdata.auth.bean.Sucursal [」 empresaSucursal 「] - > org.hibernate.collection.internal.PersistentSet [0] - > com.gdata.auth.bean.EmpresaSucursal [」 sucursal「] - > com.gdata.auth.bean.Sucursal [「empresaSucursal」] - > org.hibernate.collection.internal.PersistentSet [0] - > ..........
2017-04-17 2017-04-17 10:05:10.447 WARN 9788 --- [NIO-8080-EXEC-1] .wsmsDefaultHandlerExceptionResolver:的 [org.springframework.http.converter.HttpMessageNotWritableException] 處理導致異常
複製錯誤消息的文本,並將其添加到問題(的錯誤信息格式,可以使用塊引用樣式),以使其更可讀和可搜索引擎索引。此外,爲了創建一個https://stackoverflow.com/help/mcve減少類的屬性 – perissf
[映射與額外的列的多對多關聯表]的可能重複(http://stackoverflow.com/questions/5127129/mapping-many-to-many-association-table-with-extra-columns) –
看看[許多附加列](http://stackoverflow.com/a/5127262/5909679 ) –