[java] Hibernate로 기본 엔티티 속성 값을 설정하는 방법

최대 절전 모드 필드에서 기본값을 어떻게 설정합니까?



답변

실제 데이터베이스 기본값을 원하면 다음을 사용하십시오 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 주석은 데이터베이스에 따라 작동하지 않을 수 있습니다.