변경된 필드 만 업데이트 / 저장하는 방법
-
12-12-2019 - |
문제
어떻게 재생할 수있는 데이터베이스에 특정 필드 세트 만 업데이트 할 수 있습니까?현재 특정 필드가 들어있는 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")));
. 제휴하지 않습니다 StackOverflow