1
다음과 같이하고 있습니다. 그것은 나를 아프게하고있다!jpa에서 엔티티를 업데이트하는 방법은 무엇입니까?
public class CounselInfoServiceImpl
extends BaseServiceImpl<CounselInfoDao, CounselInfoEntity, Long>
implements CounselInfoService {
@Inject
ClassService classService;
@Inject
@Override
public void setDao(CounselInfoDao dao)
{
super.setDao(dao);
}
@Override
public CounselInfoEntity editTo(CounselInfoEntity model)
{
CounselInfoEntity entity = id(model.getId());
if (!Strings.isNullOrEmpty(model.getName()))
{
entity.setName(model.getName());
}
if (!Strings.isNullOrEmpty(model.getAddress()))
{
entity.setAddress(model.getAddress());
}
if (!Strings.isNullOrEmpty(model.getEducation()))
{
entity.setEducation(model.getEducation());
}
if (!Strings.isNullOrEmpty(model.getPhone()))
{
entity.setPhone(model.getPhone());
}
if (!Strings.isNullOrEmpty(model.getQQ()))
{
entity.setQQ(model.getQQ());
}
if (!Strings.isNullOrEmpty(model.getRemark()))
{
entity.setPhone(model.getPhone());
}
if (!Strings.isNullOrEmpty(model.getSchool()))
{
entity.setSchool(model.getSchool());
}
if (model.getAge() != null)
{
entity.setAge(model.getAge());
}
if (model.getSex() != null)
{
entity.setSex(model.getSex());
}
if (model.getClassIntention() != null)
{
entity.setClassIntention(
classService.id(
model.getClassIntention().getId()));
}
return entity;
}
}
spaghetti code
을 피하려면 어떤 제안을 원하십니까?
현재이 코드를 작성하는 것은 어려운 작업입니다.
편집
BTW, 나는 em.merge
이 준비가 생각하지 않습니다. here
The EntityManager.merge() operation is used to merge the changes made to a detached object into the persistence context.
참조 그것은 detached object
을 언급하지만, 업데이트 모델은 최신의 조각을 얻었다. 따라서 모델을 병합하면 모델의 모든 값이 엔티티에 적용됩니다 (예 : 업데이트하지 않으려는 비밀번호).
당신이 가지고있는 것은 이상한 방법입니다. 일반적으로 엔티티를 편집하기 위해 앱을 사용할 때 사용자는 엔티티의 모든 입력란을 포함하는 미리 채워진 양식을 사용하고 수정해야하는 입력란을 수정하고이 양식을 제출하면 비어 있거나 입력란이 모두 작성됩니다. 엔티티에 필드를 비워 두는 것은 "이 속성의 값을 수정하지 마십시오"라는 의미입니다. –
필드를 표시하지 않기 때문에 양식에 빈 필드가 없습니다. 일부 필드는 민감합니다. 따라서 사용자는 전체 날짜의 일부만 편집 할 수 있습니다. – wener
그 의미가 무엇인지 이해할 수 없습니다. 어느 날짜로 얘기하고 있니? 폼은 어떻게 생겼습니까? '민감한 부분 확인'은 무엇을 의미합니까? –