Необновляемый дочерний объект - PullRequest
0 голосов
/ 03 июля 2011

У меня есть такой метод:

@Transactional
public void add(User2 object) {
    Session session = SessionFactoryUtils.getSession(sessionFactory, false);

    session.save(object);

    String number = generateNumber(object.getPerson().getId(), object.getPerson().getFranchise().getId());
    object.setLogin(number);
    object.getPerson().setNumber(number);
    session.update(object);
}

Сущность User2 содержит сущность Person.Как видите, сначала - я добавляю новую запись в базу данных, а затем просто хочу обновить sonme поля User2 и Person.Проблема в том, что обновляется только поле User2 (HQL-запрос генерируется только для сущности User2).Как я могу сделать это, чтобы обновить сущность Person тоже?Спасибо

@Entity @Table(name="users") public class User2 implements Serializable {   
/**
 * 
 */
private static final long serialVersionUID = 1L;

/**
 * 
 */
@Id
@Column(name = "id")
@GeneratedValue
private Long id;

/**
 * 
 */
@Column(name = "login")
private String login;

/**
 * 
 */
@Column(name = "password")
private String password;

/**
 * 
 */
@OneToOne(cascade = CascadeType.ALL, targetEntity = Person2.class, orphanRemoval = true)
@JoinColumn(name = "person_id")
private Person2 person;


/**
 * 
 */
public User2() { 
    this.setId(0L);
} /*getters ans setters*/ }

@Entity @Table(name="persons") public class Person2 implements Serializable {   
/**
 * 
 */
private static final long serialVersionUID = 1L;

/**
 * 
 */
@Id
@Column(name = "id")
@GeneratedValue
private Long id;

/**
 * 
 */
@Column(name = "title", nullable = true)
private String position;

/**
 * 
 */
@Column(name = "firstname", nullable = true)
private String firstName;

/**
 * 
 */
@Column(name = "lastname", nullable = true)
private String lastName;

/**
 * 
 */
@Column(name = "birthdate", nullable = true)
private String birthDate;

/**
 * 
 */
@Column(name = "Notes")
private String notes;

/**
 * 
 */
public Person2() { 
    this.setId(0L);
} /* getters ans setters */ }

1 Ответ

1 голос
/ 06 июля 2011

Почему ты так звонишь? Пожалуйста, попробуйте следующее:

@Transactional
public void add(User2 object) {
    Session session = SessionFactoryUtils.getSession(sessionFactory, false);
    String number = generateNumber(object.getPerson().getId(), object.getPerson().getFranchise().getId());
    object.setLogin(number);
    object.getPerson().setNumber(number);
    session.saveOrUpdate(object);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...