java - 在表之间有@ManyToOne 链接时如何创建对象
问题描述
我有 2 个班级 - 个人和团队。一个人只能在一个团队中,但一个团队可以有很多人(人员对象)。问题是 Person 和 Team 都需要其他类对象来创建自己。
课程:
@Entity
@Table(name = "Team")
public class Team {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private int id;
@Column(name = "teamName", nullable = false)
private String teamName;
@OneToMany(mappedBy = "myTeam", fetch = FetchType.LAZY)
private Set <Person> setOfMembers = new HashSet<Person>();
public Team(int id, String teamName, Set <Person> setOfMembers) {
//usual code (don't want to waste so much space)
}
... other irrelevant fields ...
}
@Entity
@Table(name = "Person")
public class Person{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)
private int id;
@Column(name = "teamID", nullable = false)
private int teamID;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "teamID", referencedColumnName = "id")
private Team myTeam;
public Person(int id, int teamID, Team myTeam) {
//usual code
}
... other irrelevant fields ...
}
现在在主文件中,我正在尝试创建一个新对象:
Team t1 = new Team(1,"Nights Watch", <and here i need Person Object, so i
do something as follows:> new Person(1,1, <and here i need Team object>));
所以它会反复出现,没有尽头。我想向数据库中添加一些记录,但我不知道如何。
实际上我需要一组人对象,但我仍然不知道如何
解决方案
为什么在Team
班级初始化期间需要所有队友?
只需做一个不带Person
参数的构造函数,然后执行如下方法:
public void addTeamMember(Person person) {
setOfMembers.add(person);
}
然后,您可以创建Team
、创建Person
并最后将人员添加到团队中。
推荐阅读
- c++ - 如何以可移植的方式删除 C++ 中名称为 wchar_t 类型的文件?
- c# - 在 C# 中检查字符串是半角还是全角
- python - 调试 CPython 操作码堆栈
- r - 查找一行中所有并列的最大值,如果列包含最大值,则返回 true 或 false
- python - 引用单元测试中的相同实例(调用对象时不创建新实例)
- mongodb - MongoDB:尝试解释查询在排序内存限制上失败
- docker - Mac 上 docker 中的 awslogs 日志记录驱动程序出现 NoCredentialProviders 错误
- python - 为分类问题拆分数据集的正确程序是什么?
- php - URL GET 变量消失
- math - “奇偶校验”是否只能在一定范围内校验数据的正确性?