当前位置: 首页 > 知识库问答 >
问题:

具有CreationTimestamp的日期字段引发PropertyValueException:not null属性引用null或瞬态值

戚研
2023-03-14

我正在使用spring boot 2.0.6和hibernate 5.2.17的web服务。当我用@CreationTimestamp、@Column(nullable=false)和@Temporal(TemporalType.TIMESTAMP)的createTime字段保存对象时,我得到了异常组织。冬眠PropertyValueException:not null属性引用null或瞬态值:com。ex.实体。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)

变量Nullable#check Nullable在高版本中为真,低版本为假。

@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。有没有更好的方法像注释一样解决它?

共有1个答案

益和雅
2023-03-14

我也遇到了同样的问题,当我在我的项目中添加了依赖关系时,它起到了帮助作用。您可能希望它位于测试或编译范围内。

 类似资料:
  • 问题内容: 在使用hibernate保存父/子对象时遇到麻烦。任何想法将不胜感激。 hibernate映射: InvoiceManager.java 发票.java InvoiceItem.java 问题答案: 由于在 多对一 映射中,每个对象都必须具有附件。 __ 因此,基本思想是您需要在代码中建立该显式关系。有很多方法可以做到这一点。在您的课堂上,我看到了一个方法。我看不到方法。设置项目时,需

  • 我对Hibernate有一个问题:我有两个实体Libro和ediative,它们具有多对一的关系。当我尝试持久化时,会出现以下错误: Hibernate:选择编辑。ID_Editical,Editical_。NOMBRE as NOMBRE4_u,editorial_u。ID\u目录为ID3\u 4\u,editorial\u。NIF作为NIF4_来自Editory Editory_ where

  • 错误是: 引用表实体 有谁能给我出问题的地方提供解决方案吗?

  • 考虑: 为什么会出现这个错误? 非静态字段、方法或属性“WindowsApplication1.Form1.SetTextBoxText(int)”需要对象引用

  • 问题内容: 以下代码抛出。 这是输出: 怎么可能为空? 问题答案: 以下是有关瞬时变量的一些事实: - 当在实例变量上使用Transient关键字时,将 防止该实例变量被序列化。 - 在反序列化时,瞬态变量将恢复为其 默认值 ..... 例如: 对象引用变量 诠释为 boolean to etc ....... 所以这就是您反序列化时得到a的原因…

  • 更新父实体时出现以下错误:请注意,在持久化新的父子实体时没有错误,只有在合并操作时才会发生错误。 组织。冬眠TransientPropertyValueException:对象引用未保存的临时实例-在刷新之前保存临时实例: 以下是我的实体结构: 使用DTO通过网络向客户端发送数据,并使用Dozer映射工具将数据从实体复制到DTO。 下面是保存Vendor及其地址的EJB方法。Cascade选项设置