최대 절전 모드 필드에서 기본값을 어떻게 설정합니까?
답변
실제 데이터베이스 기본값을 원하면 다음을 사용하십시오 columnDefinition
.
@Column(name = "myColumn", nullable = false, columnDefinition = "int default 100")
문자열 입력 columnDefinition
은 데이터베이스에 따라 다릅니다. 또한이 옵션을 선택하면을 사용해야 dynamic-insert
하므로 삽입시 값이있는 Hibernate
열은 포함하지 않습니다 null
. 그렇지 않으면 기본에 대해 이야기하는 것은 무의미합니다.
그러나 데이터베이스 기본값을 원하지 않고 Java 코드의 기본값을 원하면 변수를 다음과 같이 초기화하십시오. private Integer myColumn = 100;
답변
@PrePersist
사전 지속 단계에서 어노테이션을 사용하고 기본값을 설정할 수 있습니다 .
그런 것 :
//... some code
private String myProperty;
//... some code
@PrePersist
public void prePersist() {
if(myProperty == null) //We set default value in case if the value is not set yet.
myProperty = "Default value";
}
// property methods
@Column(nullable = false) //restricting Null value on database level.
public String getMyProperty() {
return myProperty;
}
public void setMyProperty(String myProperty) {
this.myProperty= myProperty;
}
이 방법은 최대 절전 모드 아래의 데이터베이스 유형 / 버전에 의존하지 않습니다. 매핑 개체를 유지하기 전에 기본값이 설정됩니다.
답변
필드의 기본값을 설정하는 것은 어떻습니까?
private String _foo = "default";
//property here
public String Foo
값을 전달하면 덮어 쓰고 그렇지 않으면 기본값이 있습니다.
답변
최대 절전 모드 주석 사용
@ColumnDefault("-1")
private Long clientId;
답변
데이터베이스에서 수행하려는 경우 :
데이터베이스 (SQL Server 샘플)에서 기본값을 설정하십시오.
ALTER TABLE [TABLE_NAME] ADD CONSTRAINT [CONSTRAINT_NAME] DEFAULT (newid()) FOR [COLUMN_NAME]
최대 절전 모드 파일 매핑 :
<hibernate-mapping ....
...
<property name="fieldName" column="columnName" type="Guid" access="field" not-null="false" insert="false" update="false" />
...
키는 insert = “false”update = “false”입니다.
답변
한 가지 해결책은 getter가 작업중 인 값이 null (또는 초기화되지 않은 상태)인지 확인하고 그 값과 같으면 기본값을 반환하는 것입니다.
public String getStringValue(){
return (this.stringValue == null) ? "Default" : stringValue;
}
답변
이것을 검색하고 열의 기본값에 대한 많은 답변을 찾았습니다 .SQL 테이블에 정의 된 기본값을 사용하려면 @Column Annotation에서 “insertable = false”를 사용하십시오 . 삽입 가능
@Column (이름 = columnName, 길이 = lengthOfColumn, 삽입 가능 = false)
columnDefination을 사용하는 경우 @Column 주석은 데이터베이스에 따라 작동하지 않을 수 있습니다.
