gpt4 book ai didi

java - 以一对一关系分配值

转载 作者:行者123 更新时间:2023-11-30 21:27:28 25 4
gpt4 key购买 nike

我在 Rapidclipse 中创建了一个实体“computer”和一个实体“user”(使用 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 始终为空。那么为什么手动设置用户不起作用呢?

最佳答案

  • 用户 user = new User(...);
  • 计算机计算机 = 新计算机(...);
  • user.setComputer(计算机);
  • 计算机.setUser(用户);
  • userDao.save(用户);

这将同时保存用户和计算机对象。

关于java - 以一对一关系分配值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58179875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com