【发布时间】:2021-02-01 14:15:00
【问题描述】:
我是第一次制作弹簧靴。 我正在使用 Spring Boot 版本 2.3.4。 我也使用 PostgreSQL。 我想创建两个表:玩家和团队。 球队应该有一份球员名单。
所以我创建了接下来的两个实体类:
@Entity
@Table(name = "Players")
public class Player {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="player_id")
private Long playerId;
private String name;
private int dateOfBirth;
private String originCountry;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "team_id", referencedColumnName = "team_id")
private Team team;
}
和
@Entity
@Table(name = "Teams")
public class Team{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="team_id")
private Long teamId;
private String name;
private String country;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "team", orphanRemoval = true)
private List<Player> players = new ArrayList();
}
您可能已经知道,spring boot 会自动创建表。 Team表没有玩家列的问题。
这里有什么问题? 也许我不需要在 Team 表中查看球员列? (这对我来说似乎很奇怪......) 有没有更好的方法来定义值列表或数组?
另外,我想了解一下:@JoinColumn(name="team_id"))是否定义了玩家的队伍属性private Team team;的列名?
谢谢!!
【问题讨论】:
-
@ElementCollection注释(如果指定)由集合表映射。请参阅文档:docs.oracle.com/javaee/6/api/javax/persistence/…) -
@blurfus 对。但是删除注释并没有改变任何事情。
-
数据库表已经创建(如果它不存在则第一次创建) - 您需要自己从数据库中删除该表
-
让我知道这是否适合你 :)
-
@blurfus 感谢您的耐心等待。它没有帮助。正如您在问题中看到的那样,我还尝试使用 OneToMany 注释,但结果相似。
标签: java spring postgresql spring-boot jpa