1.创建的字段和oracle数据库的关键字冲突
代码中使用到的level和关键字冲突
解决方案
@TableField(value = "\"level\"")
private Integer level;
2.代码中使用的instant类型和数据库中的date类型无法转换
解决方式 ,自定义一个转换handler,在实体类的属性上添加
@TableField(value = "start_time",typeHandler = com.haocang.equipment.config.handler.InstantTypeHandler.class)
private Instant startTime;
@MappedTypes(Instant.class)
@MappedJdbcTypes(JdbcType.TIMESTAMP)
public class InstantTypeHandler extends BaseTypeHandler<Instant> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, Instant parameter, JdbcType jdbcType) throws SQLException {
ps.setTimestamp(i, Timestamp.from(parameter));
}
@Override
public Instant getNullableResult(ResultSet rs, String columnName) throws SQLException {
Timestamp timestamp = rs.getTimestamp(columnName);
return timestamp != null ? timestamp.toInstant() : null;
}
@Override
public Instant getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
Timestamp timestamp = rs.getTimestamp(columnIndex);
return timestamp != null ? timestamp.toInstant() : null;
}
@Override
public Instant getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
Timestamp timestamp = cs.getTimestamp(columnIndex);
return timestamp != null ? timestamp.toInstant() : null;
}
}
3.插入数据时无法递增问题
创建表时需要创建一个序列 主键递增的方式改为根据序列递增
注意这里的@TableId注解中的类型需要定义为(type = IdType.INPUT)
@TableName(value ="PIPELINE_DAMAGE_RESISTANT")
@KeySequence(value = "SEQ_PIPELINE_DAMAGE_RESISTANT_ID")
public class PipelineDamageResistant implements Serializable {
/**
*
*/
@TableId(value = "id", type = IdType.INPUT)
@NotNull(message = "PipelineDamageResistant_Id_NotNull", groups = { UpdGroup.class })
private Integer id;
}
其中@KeySequence中指定的是序列名称