Я создал сущность «компьютер» и сущность «пользователь» в Rapidclipse (используя Vaadin и JPA / Hibernate). Эти два объекта связаны через отношение один к одному.
Компьютер объекта
@Entity
@DAO(daoClass = ComputerDAO.class)
@Cacheable(true)
@Table(name = "computer")
public class Computer implements Serializable {
private int id;
...
private User user;
...
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
public int getId() {
return this.id;
}
public void setId(final int id) {
this.id = id;
}
...
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "user_id")
public User getUser() {
return this.user;
}
public void setUser(final User user) {
this.user = user;
}
...
}
Пользователь объекта
@Entity
@DAO(daoClass = UserDAO.class)
@Cacheable(true)
@Table(name = "user")
public class User implements Serializable {
private int id;
...
private Computer computer;
...
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
public int getId() {
return this.id;
}
public void setId(final int id) {
this.id = id;
}
...
@OneToOne(mappedBy = "sps")
public Computer getComputer() {
return this.computer;
}
public void setComputer(final Computer computer) {
this.computer = computer;
}
...
}
Я уже создал несколько компьютеров в моей базе данных. Через группу полей я пытаюсь назначить определенного пользователя определенному компьютеру. Поэтому у меня есть текстовые поля для ввода пользовательских данных для создания нового пользователя и список выбора, чтобы выбрать связанный компьютер. С помощью кнопки сохранения я хочу создать нового пользователя с выбранным подключением к компьютеру.
...
this.fieldGroup.setItemDataSource(new User());
...
private void cmdSave_buttonClick(final Button.ClickEvent event){
this.fieldGroup.save(); // the user gets created, but there is no link to the computer
this.listSelect.getSelectedItem().getBean().setUser(this.fieldGroup.getItemDataSource().getBean()); // i am trying to link them manually, but it does not work
}
Как описано, проблема заключается в том, что связь между компьютером и пользователем не записывается в базу данных. В настольном компьютере атрибут user_id всегда равен нулю. Так почему же не получается установить пользователя вручную?