我有一个属性
private boolean include;
Run Code Online (Sandbox Code Playgroud)
我想将其默认值设置为true,以便在数据库中它必须从默认值显示True.这在JPA有可能吗?
Ant*_*cal 52
据我所知,没有JPA原生解决方案来提供默认值.这是我的解决方法:
非数据库移植解决方案
@Column(columnDefinition="tinyint(1) default 1")
private boolean include;
Run Code Online (Sandbox Code Playgroud)
面向Java的解决方案
private boolean include = true;
Run Code Online (Sandbox Code Playgroud)
面向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;
}
...
}
Run Code Online (Sandbox Code Playgroud)
这是我最喜欢的,不那么干扰.基本上,它委派任务来定义实体中Builder模式的默认值.
对于PostgreSQL,您可以在定义中使用 boolean
@Column(name = "isDeleted", columnDefinition = "boolean default true")
private boolean isDeleted = true;
Run Code Online (Sandbox Code Playgroud)
使用JPA 2.1和Oracle 11,可以通过使用大小为1的Oracle类型NUMBER对我有效:
Java:
@Column(name = "ENABLED", nullable = false)
private boolean enabled = true;
Run Code Online (Sandbox Code Playgroud)
创建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")
);
Run Code Online (Sandbox Code Playgroud)
也许对于使用Microsoft SQL SERVER的人有用
@Column(columnDefinition="bit default 0")
private Boolean active;
Run Code Online (Sandbox Code Playgroud)
可能的值:0 或 1
| 归档时间: |
|
| 查看次数: |
64780 次 |
| 最近记录: |