如何在 JPA 中设置默认布尔值

新手上路,请多包涵

我有一个属性

private boolean include;

我想将其默认值设置为 true,以便在数据库中它必须默认显示 True。这在 JPA 中可能吗?

原文由 Andre Coetzee 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

据我所知,没有提供默认值的 JPA 本机解决方案。这是我的解决方法:

非数据库可移植解决方案

@Column(columnDefinition="tinyint(1) default 1")
private boolean include;

面向Java的解决方案

private boolean include = true;

面向 Java 加 Builder 模式

     @Column(nullable = false)
     private Boolean include;
     ...
     public static class Builder {
      private Boolean include = true; // Here it comes your default value
      public Builder include (Boolean include ) {
      this.include = include ;
      return this;
     }
     // Use the pattern builder whenever you need to persist a new entity.
     public MyEntity build() {
       MyEntity myEntity = new MyEntity ();
       myEntity .setinclude (include );
       return myEntity;
      }
...
}

这是我最喜欢的,不那么打扰。基本上,它将任务委托给实体中的 Builder 模式定义默认值。

原文由 Antonio Maria Sanchez Berrocal 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用 JPA 2.1 和 Oracle 11 这通过使用大小为 1 的 Oracle 类型 NUMBER 对我有用:

爪哇:

 @Column(name = "ENABLED", nullable = false)
private boolean enabled = true;

创建 SQL 脚本:

 CREATE TABLE "ACCOUNT"(
"ID" NUMBER(10,0) NOT NULL ENABLE,
"NAME" VARCHAR2(255 CHAR) NOT NULL ENABLE,
"PASSWORD" VARCHAR2(255) NOT NULL ENABLE,
"ENABLED" NUMBER(1,0) DEFAULT 1 NOT NULL ENABLE,
PRIMARY KEY ("ID")
);

原文由 Daniel Mora 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题