【发布时间】:2016-08-30 19:18:10
【问题描述】:
我有一个用于后端的 spring data rest api 和一个用于前端的 AngularJs(mysql 作为数据库)。 我正在尝试使用我制作以下 JAVA 逻辑的存储库将“dictamenes”列表添加到“expediente”
混合 Java 类 ExpedienteDictamen:
@Entity
@Table(name="expediente_dictamen")
public class ExpedienteDictamen implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name = "id")
private Long id;
@RestResource(exported=false)
@ManyToOne(fetch = FetchType.EAGER, targetEntity = Expediente.class, optional=false, cascade=CascadeType.MERGE)
@JoinColumns(value = {
@JoinColumn(name = "expediente", referencedColumnName = "id", insertable = true, updatable = true, nullable = true)})
private Expediente expediente;
@RestResource(exported=false)
@ManyToOne(fetch = FetchType.EAGER, targetEntity = Dictamen.class, optional=false, cascade=CascadeType.MERGE)
@JoinColumns(value = {
@JoinColumn(name = "dictamen", referencedColumnName = "id", insertable = true, updatable = true, nullable = true)})
private Dictamen dictamen;
@Column(name = "fecha_carga")
private Date fechaCarga;
@Column(name = "fecha_mod")
private Date fechaMod;
@Column(name = "usuario_carga")
private String usuarioCarga;
@Column(name = "usuario_mod")
private String usuarioMod;
权宜之计:
@Entity
@Table(name = "expediente")
public class Expediente implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name = "id")
private Long id;
@Column(name = "numero_expediente")
private String numeroExpediente;
@Column(name = "acta_recepcion")
private String actaRecepcion;
@Column(name = "acta_aceptacion")
private String actaAceptacion;
@Column(name = "cartilla_medica")
private String cartillaMedica;
@Column(name = "cartilla_medica_obs")
private String cartillaMedicaObs;
@Column(name = "medico_acepta")
private String medicoAcepta;
@Column(name = "cartilla_notificacion")
private String cartillaNotificacion;
@RestResource(exported=false)
@ManyToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST})
@JoinColumn(name = "solicitud", referencedColumnName = "id")
private Solicitud solicitud;
@RestResource(exported=false)
@ManyToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST})
@JoinColumn(name = "franquicia", referencedColumnName = "id")
private Franquicia franquicia;
@RestResource(exported=false)
@ManyToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST})
@JoinColumn(name = "disposicion", referencedColumnName = "id")
private Disposicion disposicion;
@RestResource(exported=false)
@ManyToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST})
@JoinColumn(name = "paso", referencedColumnName = "id")
private Paso paso;
@OrderBy(value="dictamen")
@RestResource(exported=false)
@OneToMany(fetch = FetchType.EAGER, mappedBy = "expediente", cascade=CascadeType.ALL)
private Set<ExpedienteDictamen> expedienteDictamen = new HashSet<ExpedienteDictamen>();
@Column(name = "obs_documentacion")
private String obsDocumetacion;
@Column(name = "documentacion")
private Boolean documentacion;
@Column(name = "juntamedica")
private Boolean juntamedica;
@Column(name = "visa_rehabilitacion")
private Boolean visaRehabilitacion;
@Column(name = "visa_dos")
private Boolean visaDos;
@Column(name = "mesa_entradas")
private Boolean mesaEntradas;
@Column(name = "direccion_nacional")
private Boolean direccionNacional;
@Column(name = "finalizado")
private Boolean finalizado;
@Column(name = "fecha_carga")
private Date fechaCarga;
@Column(name = "fecha_mod")
private Date fechaMod;
@Column(name = "usuario_carga")
private String usuarioCarga;
@Column(name = "usuario_mod")
private String usuarioMod;
字典:
@Entity
@Table(name = "dictamen")
public class Dictamen implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name = "id")
private Long id;
@Column(name = "dictamen")
private String dictamen;
@Column(name = "fecha_dictamen")
private Date fechaDictamen;
@Column(name = "numero_dictamen")
private String numeroDictamen;
到目前为止,除了保存 ExpedienteDictamen 之外,一切似乎都运行良好。
这些存储库是使用 JpaRepository 的标准存储库。
当我发布到现有的“ExpedienteDictamen”时,一切正常,但是当我尝试创建一个新的时,它会说:
Query is: insert into expediente_dictamen (fecha_carga, fecha_mod, usuario_carga, usuario_mod) values (?, ?, ?, ?)
Query is:
insert into expediente_dictamen (fecha_carga, fecha_mod, usuario_carga, usuario_mod) values (?, ?, ?, ?)
2016-08-30 16:17:01.792 DEBUG 30635 --- [nio-8080-exec-5] a.g.s.f.aop.logging.LoggingAspect : Enter: ar.gob.snr.franquicia.web.rest.errors.ExceptionTranslator.processRuntimeException() with argument[s] = [org.springframework.orm.jpa.JpaSystemException: could not execute statement; nested exception is org.hibernate.exception.GenericJDBCException: could not execute statement]
2016-08-30 16:17:01.792 DEBUG 30635 --- [nio-8080-exec-5] a.g.s.f.aop.logging.LoggingAspect : Exit: ar.gob.snr.franquicia.web.rest.errors.ExceptionTranslator.processRuntimeException() with result = <500 Internal Server Error,ar.gob.snr.franquicia.web.rest.errors.ErrorDTO@6a850e14,{}>
有什么想法吗?
**已编辑。
【问题讨论】:
-
你检查是否连接到数据库?
-
可能试图将空内容保存到需要内容的任何字段?
-
是的,因为我可以发布除此之外的任何内容,我什至可以更新一个实际的“ExpedienteDictamen”,我对此不确定。我可能错误地通过了“Expediente”。有什么想法吗?
-
我尝试用 Dictamen 和 Expediente 将其发布为空白,并且可以正常工作。所以这意味着我没有正确传递这些值。有什么想法吗?
-
你如何在没有 expediente 和 dictamen 值的情况下创建 ExpedienteDictamen,因为它们不可为空?并且由于这些属性也具有可插入和可更新为 false,因此只能使用 Expediente/Dictamen 实体创建 ExpedienteDictamen 的记录。
标签: java angularjs spring rest