поле даты с CreationTimestamp throw PropertyValueException: свойство not-null ссылается на нулевое или временное значение - PullRequest
0 голосов
/ 23 января 2019

Я использую веб-сервисы с spring-boot 2.0.6 и hibernate 5.2.17.Когда я сохраняю объект с полем createTime из @CreationTimestamp, @Column (nullable = false) и @Temporal (TemporalType.TIMESTAMP), я получаю исключение org.hibernate.PropertyValueException: свойство not-null ссылается на нулевое или временное значение:com.ex.Entity.createTime.Но в другом сервисе (spring-boot 1.5.6 и hibernate 5.0.12) эта проблема не возникала.

Поэтому я отлаживал ее шаг за шагом, и в конце концов обнаружил, что когда hibernate проверял поле с помощью@Column (nullable = false)

org.hibernate.engine.internal.Nullability#checkNullability(Object[] values, EntityPersister persister, boolean isUpdate)

переменная Nullability # checkNullability имеет значение true в старшей версии, а младшая версия - false.

@Table(name = "t_entity")
@Entity
class Entity{
  @Id
  @GenericGenerator(name = "system-uuid", strategy = "uuid")
  @GeneratedValue(generator = "system-uuid")
  @BeanProperty
  var id: String = _

  @CreationTimestamp
  @Temporal(TemporalType.TIMESTAMP)
  @Column(nullable = false, updatable = false)
  @BeanProperty
  var createTime: Date = _

  //other fields are ignored
}


trait EntityRepository extends JpaRepository[Entity, String] 
  with QuerydslPredicateExecutor[Entity] {
}

Я знаю, что изменение версии (Я не могу) или установка значения createTime (глупо) может решить эту проблему, и я думаю, что java и scala мало влияют на эту проблему, поэтому пример кода - scala.Есть ли лучший способ решить это как аннотация?

...