나는 아주 흥미로운 문제가 있습니다. 서버에 값을 설정하고 클라이언트에게 bean을 보낸 다음 값없이 서버 으로 돌아옵니다.
1. 클라이언트가 좀 과도 속성을 설정 3.
나 최대 절전 모드를 통해 데이터베이스에서 빈을 가져
2 EntityRequest.getEntity (PARAMS) (I를 통해 DB에서 일부 콩을 요청 여기 Gwt 요청 빈 업데이트 문제
4. Bean을 EntityRequest의 메소드를 통해 클라이언트로 보냅니다.
5. 클라이언트가 다른 값을 변경하고 호출이 지속됩니다.
6. 서버는 자신의 콩 및
를 다시 수신 - 무시 서버에서 설정 한 속성 (스텝 번호 3.) 삭제됩니다/- 제대로 클라이언트
에서 속성을 설정하고있다.
RF 메커니즘이 클라이언트의 변경 사항 만있는 새로로드 된 DB로드 된 버전을 보내는 것처럼 보입니다. 몇 가지 조사를 해봤고 빈 버전 문제가 있었던 것처럼 보입니다. bean은 버전 셋트를 가지고 있으며 (아래 참조), 그것은 Hibernate에 의해 사용되며 RF에 의해서도 사용된다.
고객에게 가치를 부여하고 되돌리려면 어떻게해야합니까? 나는 "entity.version ++"을 시도했다. 3 단계에서 작동하지만 작동하지 않습니다.
@Entity
public class Person {
@Id
@GeneratedValue
private Long id;
@Version
private Integer version;
@Field
private String name;
@Transient
private Long participationId;
...
public Long getId() {
return id;
}
public Integer getVersion() {
return version;
}
...
}
public static Person findPerson(Long id) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
try {
Object p = session.get(Person.class, id);
session.getTransaction().commit();
return p != null ? (Person) p : null;
} catch (RuntimeException e){
logger.error("Person.findPerson", e);
session.getTransaction().rollback();
throw e;
}
}
로케이터 코드를 공유 할 수 있습니까? (당신이 사용하는 것에 따라'Person' 클래스의'public static Person findPerson (Long id)'메소드) –
Thomas, 위의 findPerson 코드를 질문에 추가했습니다. 나 자신도 약간의 연구를 해봤고 findPerson (id)이 도메인 객체를 재구성 할 때 실제로 호출된다는 것을 발견했다. 내부 캐시를 사용하지 않는 이유는 무엇입니까? 도메인 객체 캐시를 사용하기 위해 findPerson을 다르게 코딩 할 수 있습니까? 고맙습니다. – hostnik
당신은 ** (와 같이 : 당신이하고있는 일을 정말로 알지 못한다면) 반드시 JPA/Hibernate /와 함께 view_ 패턴에서 _open 세션을 사용해야하므로, 동일한 세션 (및 그 내부 캐시)를 요청 (실적 이외의 이유로). 요청 사이에 있지만 다른 캐시를 공유 할 수도 있지만 실제로 필요할 때까지 기다려야합니다. [_premature optimization은 모든 evil_의 근원입니다.] (http://c2.com/cgi/wiki?PrematureOptimization) –