Проблема с гибернацией - постоянный контекст - PullRequest
1 голос
/ 27 августа 2010

У меня есть что-то вроде Person и Address объекта (Person имеет Address и другие свойства).

Я обновляю Address или другие свойства в одном запросеИ в другом запросе я ищу через всех людей.Но иногда я вижу измененные свойства, а иногда нет.

Просто сделав еще один запрос, я получу либо измененные, либо неизмененные свойства.

Где ошибка.Я пытался смывать везде, совершать, но безуспешно.Есть идеи?

Мое отображение:

@Entity
@Table(schema="zet",name="phone_number")
public class PhoneNumber {  
    private String id;  
    private String number;  
    private Person person;
    private int status;
    ......

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public void setPerson(Person person) {
        this.person = person;
    }

    @OneToOne(cascade= { CascadeType.PERSIST, CascadeType.MERGE, 
                         CascadeType.REFRESH })      
    @JoinColumn(name="person_id")
    public Person getPerson() {
        return person;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    @Column(name="num",unique=true,nullable=false)
    public String getNumber() {
        return number;
    }

    public void setId(String id) {
        this.id = id;
    }

    @Id
    @Column(name = "id", nullable = false)
    public String getId() {
        return id;
    }
}

Ответы [ 2 ]

0 голосов
/ 07 сентября 2010

О, я понял, большое спасибо за вашу помощь (Петр Козелек). Есть кеши сеансов для разных баз данных, разных провайдеров соединений. И другая сессия закрывалась окончательно.

0 голосов
/ 27 августа 2010

Это похоже на проблему транзакции. Вы используете Spring в качестве менеджера транзакций?

Чтобы убедиться, что изменение сохраняется, используйте:

  @Transactional(readOnly = false)
  public void persistMyChange(Bean myBean) {
     myBeanDao.save(myBean);
  }

По умолчанию Transactional имеет значение false только для false, но ваш уровень обслуживания может быть обернут в Transactional со значением readOnly к true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...