【发布时间】:2019-08-12 16:28:17
【问题描述】:
我在 Spring Boot 应用程序的 Oracle 表中插入一行。主键需要使用注释生成。我有一个代表表格的实体模型:
@Entity
@Table(name="PURCH_TENDR")
public class LhlPurchTendrModel implements Serializable {
@Id
@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator")
@Column(name="PURCH_TENDR_ID")
private String purchTendrId;
@Column(name="CREATED_BY_NM")
private String createdByNm;
@Column(name="CREATED_DT")
private Timestamp createdDt;
@Column(name="UPDATED_BY_NM")
private String updatedByNm;
@Column(name="UPDATED_DT")
private Timestamp updatedDt;
@Column(name="MODIFY_BY_NM")
private String modifyByNm;
@Column(name="MODIFY_DT")
private Timestamp modifyDt;
@Column(name="CARRIER_TENDER_ID")
private long CarrierTenderId;
@Column(name="EVENT_GMT_TM")
private Timestamp EventGmtTm;
@Column(name="PURCH_COST_ID")
private int PurchCostId;
@Column(name="LAT")
private float Lat;
@Column(name="LON")
private float Lon;
@Column(name="CITY_NM")
private String cityNm;
@Column(name="STATE_CD")
private String stateCd;
@Column(name="CARER_EDI_NBR")
private String carerEdiNbr;
@Column(name="EVENT_STAT_CD")
private String eventStatCd;
@Column(name="ETN_TM")
private Timestamp EtnTm;
@Column(name="PCKUP_NBR")
private String PickupNbr;
@Column(name="VIN")
private String Vin;
@Column(name="EQUIP_NBR")
private String EquipNbr;
@Column(name="EQUIP_PREFIX")
private String EquipPrefix;
这些成员变量也有 getter 和 setter。 我使用一个 Repository 类来实现一个 jdbctemplate 来插入行。 当我使用这种插入变体时,我收到列类型无效的错误:
public boolean insertPurchaseInfo(LhlPurchTendrModel lhlPurchTendrModel) throws SQLException {
boolean success= false;
String ds = lhlJdbcTemplate.getDataSource().getConnection().getSchema();
LOGGER.info("Schema and Insert Purchase Info {}", ds);
String insertSequenceNbrSQLStatement = "INSERT INTO purch_tendr(created_by_nm, created_dt, modify_by_nm, modify_dt, carrier_tender_id, purch_cost_id, event_stat_cd, equip_nbr, equip_prefix) " +
"VALUES (?, SYSDATE, ?, SYSDATE, ?, ?, ?, ?, ?)";
try{
int rowsInserted = lhlJdbcTemplate.update(
insertSequenceNbrSQLStatement,
new Object[] {lhlPurchTendrModel});
if(rowsInserted > 0){
success = true;
}
}
当我尝试使用此代码插入时,我收到错误“无法将 NULL 插入表 Purch_Tendr 列 Purch_Tendr_Id。
public boolean insertPurchaseInfo(LhlPurchTendrModel lhlPurchTendrModel) throws SQLException {
boolean success= false;
String ds = lhlJdbcTemplate.getDataSource().getConnection().getSchema();
LOGGER.info("Schema and Insert Purchase Info {}", ds);
String insertSequenceNbrSQLStatement = "INSERT INTO purch_tendr(created_by_nm, created_dt, modify_by_nm, modify_dt, carrier_tender_id, purch_cost_id, event_stat_cd, equip_nbr, equip_prefix) " +
"VALUES (?, SYSDATE, ?, SYSDATE, ?, ?, ?, ?, ?)";
try{
int rowsInserted = lhlJdbcTemplate.update(
insertSequenceNbrSQLStatement,
new Object[]{lhlPurchTendrModel.getCreatedByNm(), lhlPurchTendrModel.getModifyByNm(), lhlPurchTendrModel.getCarrierTenderId(), lhlPurchTendrModel.getPurchCostId(),
lhlPurchTendrModel.getEventGmtTm(), lhlPurchTendrModel.getEquipNbr(), lhlPurchTendrModel.getEquipPrefix()});
if(rowsInserted > 0){
success = true;
}
}
我不确定如何将 @Entity 类与 JdbcTemplate 一起使用。如何指示 JdbcTemplate 生成主键值?
【问题讨论】:
标签: java spring-boot jdbctemplate