【发布时间】:2016-04-07 13:37:44
【问题描述】:
我在将对象持久保存到数据库时遇到了一个异常,下面是代码库模型:
@Entity
@Table(name = "customer_data")
public class BsslpCustomerInfo {
@Id
@Column(name = "id", length = 10)
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@Column(name = "service_Id", length = 50, unique = true, nullable = false)
private String serviceId;
@Column(name = "quarter", length = 255, nullable = false)
private String quarter;
@Column(name = "year")
private int year;
@Column(name = "activated_Customer_Name")
private String activatedCustomerName;
@Column(name = "deactivated_Customer_Name")
private String deactivatedCustomerName;
@Column(name = "quarter_Start_Date")
private String quarterStartDate;
@Column(name = "quarter_End_Date")
private String quarterEndDate;
public String getServiceId() {
return serviceId;
}
public void setServiceId(String serviceId) {
this.serviceId = serviceId;
}
public String getQuarter() {
return quarter;
}
public void setQuarter(String quarter) {
this.quarter = quarter;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public String getActivatedCustomerName() {
return activatedCustomerName;
}
public void setActivatedCustomerName(String activatedCustomerName) {
this.activatedCustomerName = activatedCustomerName;
}
public String getDeactivatedCustomerName() {
return deactivatedCustomerName;
}
public void setDeactivatedCustomerName(String deactivatedCustomerName) {
this.deactivatedCustomerName = deactivatedCustomerName;
}
public String getQuarterStartDate() {
return quarterStartDate;
}
public void setQuarterStartDate(String quarterStartDate) {
this.quarterStartDate = quarterStartDate;
}
public String getQuarterEndDate() {
return quarterEndDate;
}
public void setQuarterEndDate(String quarterEndDate) {
this.quarterEndDate = quarterEndDate;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
...这是“控制器”代码:
for (BsslpParty bsslp : data) {
Date activationDate = sdf.parse(bsslp.getAssocStartDate());
Date deactivationDate = sdf.parse(bsslp.getAssocEndDate());
if(activationDate.compareTo(startDate)>=0 && activationDate.compareTo(endDate)<=0){
activeCount++;
BsslpCustomerInfo bsslpCustomerInfo = new BsslpCustomerInfo();
bsslpCustomerInfo.setServiceId(bsslp.getBsslpName());
bsslpCustomerInfo.setActivatedCustomerName(bsslp.getEntitledPartyName());
bsslpCustomerInfo.setQuarter(quarterDateRange.getStartdate());
bsslpCustomerInfo.setYear(quarterDateRange.getFinYear());
bsslpCustomerInfo.setQuarterStartDate(quarterDateRange.getStartdate());
bsslpCustomerInfo.setQuarterEndDate(quarterDateRange.getEndDate());
listOfActDeActCust.add(bsslpCustomerInfo);
}
usageMetricschartService.saveAllCustomerData(listOfActDeActCust);
}
“服务”实现:
@Override
@Transactional
public void saveAllCustomerData(List<BsslpCustomerInfo> customersData) {
// TODO Auto-generated method stub
for (BsslpCustomerInfo bsslpCustomerInfo : customersData) {
usageMetricsCustomersRepository.save(bsslpCustomerInfo);
}
}
它抛出一个错误,如:
java.sql.BatchUpdateException: ORA-01722: 无效号码
oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343) org.springframework.dao.InvalidDataAccessResourceUsageException:无法执行批处理; SQL [插入customer_data (激活_客户_姓名,停用_客户_姓名,季度, Quarter_End_Date, Quarter_Start_Date, service_Id, year, id) 值 (?, ?, ?, ?, ?, ?, ?, ?)];嵌套异常是 org.hibernate.exception.SQLGrammarException:无法执行批处理
我尝试了所有可能的方法都无法解决这个问题;谁能帮我解决这个问题?
【问题讨论】:
标签: java spring-data-jpa