我有一个很有趣的问题。我在服务器上设置了一些值,将 bean 发送到客户端,然后它在没有这些值的情况下返回服务器。
这是我所做的:
1. 客户端通过 EntityRequest.getEntity(params) 从数据库请求一些 bean
2. 我通过 Hibernate 从数据库中获取一个 bean
3. 我设置了一些临时属性(我需要它们在客户端并且不想要它们存储在 DB 中)
4. 通过 EntityRequest 的方法将 bean 发送到客户端。
5. 客户端更改了一些其他值并且调用仍然存在。
6. 服务器接收回他的 bean 并且
- 已从客户端正确设置属性
-从服务器设置的属性(第 3 步)是 ERASED / IGNORED。
看起来 RF 机制会向我发送仅来自客户端的更改的新数据库加载版本。我做了一些研究,看起来一定有一些 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;
}
}