1
以下是我的两个实体类,它们具有一对多和多对一的关系。休眠一对多自动添加子对象异常
Parent AuditMst:
public class AuditMst implements Serializable {
/*@Id
@Column(name="AUDIT_ID")
private String auditId;*/
@Id
@Column(name="AUDIT_ID")
@GeneratedValue(strategy=GenerationType.AUTO)
private long auditId;
private String action;
@Column(name="DATE_TIME")
private Timestamp dateTime;
//bi-directional many-to-one association to AuditDetail
@OneToMany(mappedBy = "auditMst", cascade = {CascadeType.ALL })
private List<AuditDetail> auditDetails;
Child entity: Audit Details
public class AuditDetail implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="ID")
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
@Column(name="FIELD_NAME")
private String fieldName;
//bi-directional many-to-one association to AuditMst
@ManyToOne
@JoinColumns({
@JoinColumn(name = "AUDIT_ID", referencedColumnName = "AUDIT_ID")})
private AuditMst auditMst;
当我尝试添加保存审计MST和审计内容目录休眠使我异常:
ohengine.jdbc.spi.SqlExceptionHelper:列“AUDIT_ID”不能为空
这是一对多的关系。我正在使用spring数据jpa和hibernate。
在我的审计听者:
AuditMst auditMst = new AuditMst();
auditMst.setAction("add");
for(Object propNameObject : map.keySet()){
AuditDetail auditDetail = new AuditDetail();
String propertyName = (String) propNameObject;
Object property1 = propUtils.getProperty(oldObject, propertyName);
Object property2 = propUtils.getProperty(newObject, propertyName);
auditDetail.setFieldName(propertyName);
auditDetail.setOldValue(property1.toString());
auditDetail.setNewValue(property2.toString);
auditDetailList.add(auditDetail);
}
auditMst.setAuditDetails(auditDetailList);
auditMstService.addAuditMst(auditMst);
ServiceImpl:
@Transactional
public AuditMst addAuditMst(AuditMst auditMst){
AuditMst savedAuditMst = auditMstRepository.save(auditMst);
}
@jack你从命运表有FK,audit_detail?你使用的代码是一样的吗?你能添加异常的完整堆栈跟踪吗? – cralfaro
你可以添加一段代码来创建这些实体并保存它们吗? – cralfaro
请使其可读性增加到您的原始问题。 – cralfaro