非常に興味深い問題があります。サーバーにいくつかの値を設定し、Bean をクライアントに送信すると、その値なしでサーバーに返されます。
1. クライアントは
EntityRequest.getEntity(params) を介して DB からいくつかの Bean を要求します
2. Hibernate を介してデータベースから Bean をフェッチします
3. いくつかの一時的なプロパティを設定します4. EntityRequest
のメソッドを介して Bean をクライアントに送信します。
5. クライアントは他のいくつかの値を変更し、呼び出しは持続します。
6. サーバーが Bean を受け取り、
-
クライアントから適切にプロパティが設定されている - サーバーから設定されたプロパティ (ステップ 3) が ERASED / IGNORED である。
RF メカニズムが、クライアントからの変更のみを含む、新しく DB をロードしたバージョンを送信してきたようです。いくつかの調査を行ったところ、Bean バージョンの問題があったに違いないようです。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;
}
}