Использование JPA для взаимодействия с MySQL.Код
Класс ImpsLogEntity
@Entity
@Table(name = "imps_log")
@Getter
@Setter
public class ImpsLogEntity extends ImpsLog {}
Класс ImpsLog
@Setter
@Getter
@JsonIgnoreProperties(ignoreUnknown = true)
@MappedSuperclass
@ToString
public class ImpsLog {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "amount")
private BigDecimal amount;
@Column(name = "created_at")
@CreationTimestamp
private Date createdAt;
@Column(name = "updated_at")
@UpdateTimestamp
private Date updatedAt;
}
ImpsLogRepo
public interface ImpsLogRepo extends JpaRepository<ImpsLogEntity, Long> {
}
ImpsLogBo
@Getter
@Setter
public class ImpsLogBo extends ImpsLog {
private Error error;
}
AccountMapper (с использованием mapstruct)
@Mapper(componentModel = "spring")
@DecoratedWith(AccountMapperDecorator.class)
public interface AccountMapper {
ImpsLogEntity impsLogBoToImpsLogEntity(final ImpsLogBo impsLogBo);
}
Чтобы создать и сохранить объект:
ImpsLogBo impsLogBo = new ImpsLogBo() ;
impsLogBo.setAmount(new Bigdecimal(200));
ImpsLogEntity impsLogEntity =
this.accountMapper.impsLogBoToImpsLogEntity(impsLogBo);
impsLogEntity = this.impsLogRepo.save(impsLogEntity);
SQL-оператор создания для imps_log
CREATE TABLE `imps_log` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`amount` decimal(15,2) DEFAULT NULL,
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `created_at` (`created_at`),
KEY `updated_at` (`updated_at`)
)
Этот код дает org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Столбец 'create_at' не может быть нулевым ошибка при сохранении в БД.
*
Странная часть, как и для других объектовэта аннотация работает.И для этой сущности эта ошибка также непоследовательна.
*