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

JPA-默认值

尤博达
2023-03-14

我正在开发一个JPA应用程序,并且我正在使用eclipse链接提供程序。

我有一个表T1,其中有一个字段F1定义为非null,并且有一个默认值(“U”)。

我已经定义了一个映射到表T1的实体。该实体有一个映射到字段F1的属性,我已经用注释@ReturnInsert(returnOnly=true)配置了该属性。

文件说明:

使用@返回插入使INSERT操作将值返回到正在写入的对象中

如果在映射到F1的属性中保留一个没有值的实体,则一切正常。插入后,将自动使用默认值填充实体,并在数据库中插入一条记录。

但如果我尝试使用不同的值(无默认值)持久化实体,则会将一条记录插入到数据库中,但字段F1的值是默认值,而它应该是我在实体中设置的值。

为什么会这样?我只想更改默认值。

谢谢

共有1个答案

芮瑾瑜
2023-03-14

我为数据库中的字段设置默认值的做法是:

  1. 在数据库中为该字段定义默认值
  2. 将实体中的相应属性设置为只读

例如,对于日期字段,您可以这样做:

在DB中:

reg_date    DATE NOT NULL DEFAULT CURRENT_DATE  

在实体中:

@Basic(optional=false)
@Temporal(TemporalType.DATE)
@Column(name = "reg_date", insertable= false)
private Date regDate;

通过这样做,我得到了一个在插入新字段时总是由数据库自动设置的字段。

 类似资料:
  • 问题内容: 根据我的理解和JPA批注进行提取。我希望将它们延迟加载到我的应用程序中,或者至少提示它(这是hibernate默认值)。我已经开始添加注释 例如 代替 这既乏味又容易出错。有什么方法可以在应用程序级别执行此操作吗?在persistence.xml中? 问题答案: 迄今为止,我选择让Hibernate在通过注释进行映射方面遵循JPA规范,仅仅是因为我没有收到任何使其可配置的功能请求,这令

  • 问题内容: 我正在尝试将Infinispan配置为休眠二级缓存。一切都很好,但是我想调整默认配置,即所有缓存共享的值。 缓存是用于注明实体自动创建的,我可以通过一个在对其进行自定义一个通过。但是,我希望所有这些缓存都具有默认值(例如,逐出策略)。 另一件事是,我想将所有这些生成的缓存标记为“分布式”(默认情况下它们是“本地的”)。 这是我的摘录: 我该怎么做? 问题答案: 实体的默认缓存配置名为:

  • 我如何将@瞬态布尔值的默认值设置为false?每次我得到我的对象时,该值都是true。我尝试使用“@列(nullable=false,列定义=”布尔默认为false”)”但不起作用 Thx =)

  • 问题内容: 使用JPA,我们可以手动或锁定来处理事务中的实体更改。 我想知道如果不指定这两种模式之一,JPA如何处理锁定?没有使用锁定模式? 如果不定义显式锁定模式,是否会丢失数据库完整性? 谢谢 问题答案: 我已经浏览了Java Persistence API 2.0 Final Release 规范的3.4.4 锁定模式 部分,虽然找不到任何 特定的 东西(它没有声明 这 是默认值或类似的东西

  • 问题内容: 可以为JPA中的列设置默认值吗?如果使用注释,如何做到这一点? 问题答案: 实际上,在JPA中是可能的,尽管使用批注的属性有些小小的改动,例如:

  • 我正在开发一个使用 JPA 和Hibernate的项目,我刚刚注意到实体没有任何关系注释,例如@ManyToOne、@OneToOne等。所以我的问题是,JPA / Hibernate是否为每个案例添加了默认注释? 这里有一个例子 JPA是否默认在此属性中添加@OneTo的注释?