使用hibernate将obj保存到数据库中

时间:2015-02-11 18:42:05

标签: hibernate

我正在使用实体mange.persist()将对象保存到db中。

这是父类

public class CurrRequestProfileBO{
private CurrRequestDataSummaryBO currRequestDataSummary;
private List<CurrRequestLicenseBO> requestLicList;
private List<CurrRequestAddrBO> requestAddrList;

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "REQUEST_PROFILE_ID", referencedColumnName = "REQUEST_PROFILE_ID", nullable = false)
@LazyCollection(LazyCollectionOption.FALSE)
@NotFound(action = NotFoundAction.IGNORE)
public CurrRequestDataSummaryBO getCurrRequestDataSummary() {
    return currRequestDataSummary;
}

@OneToMany(cascade = CascadeType.PERSIST)
@JoinColumn(name = "REQUEST_PROFILE_ID", referencedColumnName = "REQUEST_PROFILE_ID", nullable = false)
@LazyCollection(LazyCollectionOption.FALSE)
@NotFound(action = NotFoundAction.IGNORE)
public List<CurrRequestLicenseBO> getRequestLicList() {
    return requestLicList;
}

@OneToMany(cascade = CascadeType.PERSIST)
@JoinColumn(name = "REQUEST_PROFILE_ID", referencedColumnName = "REQUEST_PROFILE_ID", nullable = false)
@LazyCollection(LazyCollectionOption.FALSE)
@NotFound(action = NotFoundAction.IGNORE)
public List<CurrRequestAddrBO> getRequestAddrList() {
    return requestAddrList;
}
}

这两个集合requestAddrList和requestLicList的保存工作正常。但是将currRequestDataSummary保存到db中时出错。

错误是

Caused by: java.sql.SQLIntegrityConstraintViolationException: ORA-01400: cannot insert NULL into ("APS_DATA8_1"."CURR_REQUEST_DATA_SUMMARY"."REQUEST_PROFILE_ID")

以下是正在运行的Lic BO:

public class CurrRequestLicenseBO {
@Id
@SequenceGenerator(name = "CURR_REQUEST_LIC_REQUESTLICID_GENERATOR", sequenceName = "CURR_REQUEST_LICENSE_SEQ")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "CURR_REQUEST_LIC_REQUESTLICID_GENERATOR")
@Column(name = "REQUEST_LICENSE_ID", unique = true, nullable = false, precision = 10, scale = 0)
public Long getRequestLicId() {
    return requestLicId;
}

public void setRequestLicId(Long requestLicId) {
    this.requestLicId = requestLicId;
}

@Column(name = "REQUEST_PROFILE_ID", nullable = false, insertable = false, updatable = false)
public Long getRequestProfileId() {
    return requestProfileId;
}

这是currRequestDataSummary类,它不起作用。这两个很可能是相同的注释。我不知道为什么一个人在工作,另一个人没有。

public class CurrRequestDataSummaryBO {
@Id
@SequenceGenerator(name = "CURR_REQUEST_DATA_SUMMARY_REQUESTDATASUMID_GENERATOR", sequenceName = "CURR_REQUEST_DATA_SUMMARY_SEQ")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "CURR_REQUEST_DATA_SUMMARY_REQUESTDATASUMID_GENERATOR")
@Column(name = "REQUEST_DATA_SUMMARY_ID", unique = true, nullable = false, precision = 10, scale = 0)
public Long getRequestDataSummaryId() {
    return RequestDataSummaryId;
}

public void setRequestDataSummaryId(Long requestDataSummaryId) {
    RequestDataSummaryId = requestDataSummaryId;
}

@Column(name = "REQUEST_PROFILE_ID", nullable = false, insertable = false, updatable = false)
public Long getRequestProfileId() {
    return requestProfileId;
}

这是完整的日志,bo是curr_request_profile_bo对象

bo:CurrRequestProfileBO [requestProfileId=null, entityType=I, lastName=bbb, firstName=aaa, middleName=, orgName=, prvdrTypeCd=null, dob=null, npi=, ein=, ssn=ccc, createdBy=null, createdDate=null, updatedBy=null, updatedDate=null, userId=admin, currRequestDataSummary=CurrRequestDataSummary [RequestDataSummaryId=null, requestProfileId=null, status=PENDING, createdBy=null, createdDate=null, updatedBy=null, updatedDate=null], requestLicList=[], requestAddrList=[CurrRequestAddrBO [requestAddrId=null,requestProfileId =null, addrType=Other Address, addrln1=aaa, addrln2=bbb, city=ccc, state=AK, zipCode=null, country=null, createdBy=null, createdDate=null, updatedBy=null, updatedDate=null]]]
Hibernate: select CURR_REQUEST_PROFILE_SEQ.nextval from dual
Hibernate: select CURR_REQUEST_ADDR_SEQ.nextval from dual
Hibernate: select CURR_REQUEST_DATA_SUMMARY_SEQ.nextval from dual
Hibernate: insert into CURR_REQUEST_PROFILE (CREATED_BY, CREATED_DATE, DOB, EIN, ENTITY_TYPE, FIRST_NAME, LAST_NAME, MIDDLE_NAME, NPI, ORG_NAME, PRVDR_TYPE_CD, SSN, UPDATED_BY, UPDATED_DATE, USER_ID, REQUEST_PROFILE_ID) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: insert into CURR_REQUEST_ADDR (ADDR_TYPE, ADDR_LN_1, ADDR_LN_2, CITY, COUNTRY, CREATED_BY, CREATED_DATE, STATE, UPDATED_BY, UPDATED_DATE, ZIPCODE, REQUEST_PROFILE_ID, REQUEST_ADDR_ID) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: insert into CURR_REQUEST_DATA_SUMMARY (CREATED_BY, CREATED_DATE, STATUS, UPDATED_BY, UPDATED_DATE, REQUEST_DATA_SUMMARY_ID) values (?, ?, ?, ?, ?, ?)
[2015-02-11 13:39:05] ERROR [http-8080-2] (SqlExceptionHelper.java:144) - ORA-01400: cannot insert NULL into ("APS_DATA8_1"."CURR_REQUEST_DATA_SUMMARY"."REQUEST_PROFILE_ID")

以下是我使用的持久代码:

em.persist(currRequestProfileBO);

有谁能告诉我哪里做错了。

0 个答案:

没有答案