我有一个属性
private boolean include;
我想将其默认值设置为true,以便在数据库中它必须在默认情况下显示True。这可能在JPA中吗?
答案 0 :(得分:50)
据我所知,没有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模式的默认值。
答案 1 :(得分:5)
使用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")
);
答案 2 :(得分:5)
对于 PostgreSQL ,您可以在定义中使用布尔值
@Column(name = "isDeleted", columnDefinition = "boolean default true")
private boolean isDeleted = true;
答案 3 :(得分:1)
我发现添加构造函数是将新实体默认为值的一种很好的解决方法:
public EntityName(){
this.fieldToDefault = default;
}
答案 4 :(得分:0)
您始终可以在方法中使用注释@PreUpdate
或@PrePersist
,在此方法中您将设置在更新之前或保存到数据库之前应执行的操作。
或者只是设置值private boolean include = true;
答案 5 :(得分:0)
也许对使用Microsoft SQL SERVER的人很有用
@Column(columnDefinition="bit default 0")
private Boolean active;
可能的值:0或1
答案 6 :(得分:0)
如果您在数据库中定义了默认值,则可以选择列批注,并使用insertable = false
作为参数,这样在插入值时,它将选择您在默认值中标记的值数据库。例:
在MySQL中,我的人员表的状态属性为布尔型,默认情况下为true。
在您的Java类中,它看起来像这样:
//....
public class Person implements Serializable {
//.....
@Column(insertable = false)
private Boolean status;
//...
}
您可以了解有关列注释HERE的更多信息,它的解释很好,对我有很大帮助。
答案 7 :(得分:0)
设置默认列值的简单方法是将其直接设置为实体属性值:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-nice-
select/1.1.0/js/jquery.nice-select.min.js"></script>
答案 8 :(得分:-1)
{"Parameter is not valid."}
Data: {System.Collections.ListDictionaryInternal}
HResult: -2147024809
HelpLink: null
InnerException: null
Message: "Parameter is not valid."
ParamName: null
Source: "System.Drawing"
StackTrace: " at System.Drawing.Bitmap..ctor(String filename)\r\n at johneschultz.Areas.Admin.Controllers.EmployeeController.Edit(EmployeeViewModel EmployeeData) in Z:\\_Profile Storage\\Projects\\johneschultz\\johneschultz\\Areas\\Admin\\Controllers\\EmployeeController.cs:line 552"
TargetSite: {Void .ctor(System.String)}