2013-10-26 1 views
1

테이블의 기본 키를 포함하는 영구 개체의 업데이트 된 필드가 거의없는 유스 케이스가 있습니다. 이 경우이 필드로만 행을 업데이트하려고합니다. 나는 절전 모드에서이 솔루션을 제공하지 않는다는 것을 발견했다. 그래서 객체의 모든 null이 아닌 필드를 결정하기 위해 반사를 사용하는 메소드를 직접 작성하고 이에 기반한 업데이트 쿼리를 생성하고 결국 그것을 실행한다. 내 응용 프로그램은 스프링 프레임 워크를 사용하여 작성됩니다. 지금까지 내가 한 방식은 세션 객체, 기본 키, 기본 키 값 및 tablename을 사용하는 업데이트 메소드가있는 별도의 util 클래스가 있습니다. 이 사용 사례를 구현하는 좋은 방법일까요? 이 기능을 개선하기위한 제안은 무엇입니까?최대 절전 모드에서 개체의 null이 아닌 필드 만 업데이트

+0

왜 그 필드 만 업데이트 하시겠습니까? –

답변

0

귀하의 질문에 명확하지 않습니다. 업데이트 중 하나를 할 수있는 선택하고 그것을 저장합니다. 또는 해당 엔티티를 생성하고 저장하십시오 (기본 키는 필수 항목 임). 업데이트를 원하기 때문에 첫 번째 방법을 사용할 수 있습니다. 필수 입력란에 대해 신경 쓸 필요가 없습니다.

+0

귀하의 솔루션은 2 개의 쿼리를 수행하게됩니다. 먼저 선택하고 업데이트하십시오. 하나의 쿼리 자체에서 업데이트를 수행하고 싶습니다. 그게 내가 이러는 이유 야. – coder

+0

모든 not null 값을 생성자에 전달할 수 있습니다. 따라서 모든 null이 아닌 필드에 값이있는 경우에만 지속성 객체를 만들 수 있습니다. – MadhavC

+0

내가 필드에 성, 성 및 middlename, ID를 가진 사용자 클래스를 가지고있다. firstname 만 업데이트하려면 firstname과 id 만 사용하여 사용자 개체를 만듭니다. 이제 session.saveorupdate (user)를 실행하면 lastname과 middlename이 DB에서 null로 설정됩니다. 이것은 내가 원하는 것이 아닙니다. lastname과 middlename을 그대로두고 db에서 firstname 만 업데이트하려고합니다. – coder

0

대부분의 경우 엔터티의 POJO에 원시 데이터 형식을 사용하기 때문에 유지할 엔터티의 Nullable 필드에 기본값을 저장하는 것이 그 이유 중 하나입니다.
프리미티브를 사용하고 있지 않은지 여부를 확인하십시오. 그렇다면 해당 래퍼 클래스로 전환 한 다음 저장하십시오. 저장 또는 갱신 후 커밋시 데이터베이스에 null을 전달해야합니다.
희망 사항 :이 문제가 해결됩니다.

관련 문제