문제

어떻게 재생할 수있는 데이터베이스에 특정 필드 세트 만 업데이트 할 수 있습니까?현재 특정 필드가 들어있는 User 모델이 있습니다. 전화를 걸려면 다음을 수행하십시오.

private boolean isAdministrator;
.

와 나는 접근 자 방법이있다 :

/**
 * @return the isAdministrator
 */
public boolean isAdministrator() {
    return isAdministrator;
}

/**
 * @param isAdministrator
 *            the isAdministrator to set
 */
public void setAdministrator(boolean isAdministrator) {
    this.isAdministrator = isAdministrator;
}
.

그러나 isAdministrator가 포함되어 있지 않은 양식을 통해 사용자 이름을 변경하면 Play가 내 사용자 객체를 재설정 하고이 사용자의 값을 설정합니까?

그래서, 변경된 필드 만 업데이트 할 수 있습니까?

도움이 되었습니까?

해결책

나는 귀하의 질문에 직접 대답하지 않지만 사용자가 관리자임을 나타내는 부울 대신 사용자가 상속받는 Admin 클래스를 만듭니다.

public class Admin extends User {
....
}
.

솔리드 ; -)

편집 :

컨트롤러에서 양식 값으로 업데이트하기 전에 데이터베이스에서 이전 값을로드 할 수 있습니다.

...
User userFromDB = User.findById(anId);
User userFromForm = userForm.get();

// set previous value
userFromForm.setArchived(userFromDB.getArchived());

User.update(userFromForm);
...
.

다른 팁

니코의 explore에 추가하면 모든 경우에 Form 클래스를 사용할 필요가 없으므로 추가 할 수 있습니다.때로는 요청에서 데이터를 가져오고 Ajax 호출을 통해 특히 중간 저장 수준이있는 경우에 특히 Ajax 호출을 통해 수동으로 업데이트 할만 큼 충분합니다 ( DynamicForm 짧고 자신을 확인할 수 있습니다 :

업데이트 할 필드를 지정할 수 있습니다. name 을 업데이트하고 싶다고 가정하면 다음과 같이 할 것입니다 :

Ebean.update(user, new HashSet<String>(Arrays.asList("name")));
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top