У меня есть довольно интересная проблема. Я устанавливаю некоторые значения на сервере, отправляю bean-компонент клиенту, а затем он возвращается на сервер без этих значений.
Вот что я делаю:
1. Клиент запрашивает несколько bean-компонентов из БД через EntityRequest.getEntity(params)
2. Я извлекаю bean-компонент из базы данных через Hibernate
3. Я устанавливаю некоторое временное свойство (мне нужно их на стороне клиента и не хочет, чтобы они сохранялись в БД)
4. Отправьте bean-компонент через метод EntityRequest клиенту.
5. Клиент изменяет некоторые другие значения и вызывает сохранение.
6. Сервер получает вернуть свой bean-компонент и
- он правильно установил свойства от клиента
- свойства, установленные на сервере (шаг № 3), УДАЛЕНЫ / ИГНОРИРУЮТСЯ.
Похоже, что механизм RF отправил бы мне только что загруженную версию БД только с изменениями от клиента. Я провел некоторое исследование, и похоже, что должна быть какая-то проблема с версией 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;
}
}
Locator
? (или методpublic static Person findPerson(Long id)
в классеPerson
, в зависимости от того, что вы используете) - person Thomas Broyer   schedule 08.11.2012null
кPerson
все равно будет работать) - person Thomas Broyer   schedule 09.11.2012