최대 절전 모드 4.1.7을 사용하고 개체 업데이트를 시도하고 있지만 어떻게 수행해야하는지 문서가 없습니다. 현재, 나는이 일을하고있다 : 또한EntityManager를 사용하여 최대 절전 모드로 업데이트
public Person getPersonById(int id) {
personQuery = entityManager.createNamedQuery("Person.findPerson", Person.class);
personQuery.setParameter("id", id);
return personQuery.getSingleResult();
}
I가 Person 클래스 내부에 정의 된 명명 된 질의하고 있습니다 : PersonDao getPersonById에서
public Person update(Person person) {
return entityManager.merge(person);
}
은 다음과 같은 PersonDao 업데이트에서
Person person = personDao.getPersonById(1);
person.setAge(23);
person.setLastname("McName");
person = personDao.update(person);
보인다 여기 :
@NamedQuery(name="Person.findPerson", query="SELECT p FROM Person p WHERE p.id = :id")
내 사람이 업데이트되지 않는다는 것을 사용하여 최대 절전 모드를 사용하여 업데이트를 구현하는 방법은 무엇입니까?
위의 코드는 모든 단일 트랜잭션에서 실행되는 경우 personDao.update()'에 대한 호출이'완전히 불필요한 것을 제외하고, OK입니다 : 엔티티의 상태는 /에 최대 절전 모드 JPA에 의해 영속화 자동으로됩니다 트랜잭션의 끝. getPersonById 메소드는 엔티티가 이미로드 된 경우 쿼리를 실행하지 않으므로보다 간단하고 효율적일 수있는'em.find (Person.class, id)'로 축소 될 수 있습니다. –
부록 : 이것은 설명서에서 확실히 설명됩니다. http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html_single/#d5e772 –