![](/img/trans.png)
[英]How do you to create a one to many relationship in JPA with no JoinTables?
[英]how to create controllers for objects with a one to many relationship with JPA?
如果我有兩個豆子,一個給團隊,另一個給球員。 沒有球員,團隊就無法存在,而球員必須屬於一個團隊。 如果基本上聲明了我的兩個bean在下面的狀態(假設存在getter和setter)。 如果我遵循MVC設計模式,那么設計控制器或托管Bean來將這些對象持久保存到數據庫的最佳實踐是什么? 提交后,來自的網站會要求提供球隊的名稱,並要求球員的姓名。 我需要兩個托管bean,一個用於球員,一個用於團隊嗎? 還是因為團隊擁有球員,我是否只需要一個托管bean即可?
@Entity
@Table(name = 'teams')
public class Team {
@Id
@GeneratedValue
private Integer id;
private String name;
@OneToMany(mappedBy='team', cascade=CascadeType.ALL)
private List<Player> players = new ArrayList<Player>();
}
@Entity
@Table(name = 'players')
public class Player {
@Id
@GeneratedValue
private Integer id;
private String lastname;
@ManyToOne
@JoinColumn(name = 'team_id')
private Team team;
}
我將按功能而不是按實體Bean將其分組在控制器中。 因此,一個控制器就足夠了。
選擇名稱始終是編程中最棘手的部分之一:)您可以選擇TeamController
或PlayerController
,看看哪種更合適。
對我來說,只創建一個新的托管bean
public class TeamBean {
public String nameTeam;
public list<String> namePlayer;
// getter & setter
在你的jsp中
<input .. name="nameTeam"> //team name
// the important is the attribute name must be the same as your managedbean
<input .. name="namePlayer"> //player 1 name
<input .. name="namePlayer"> //player 2 name
....
你的控制器是這樣的
@Controller
public class YourController {
....
@RequestMapping(...)
public String save-team(@ModelAttribute TeamBean teamBean , HttpServletRequest request) {
// now you have the object teamBean you can persist it in your db
// for example
Team team = yourTeamDAO.save(new Team(teamBean.nameTeam))
for(Player p : teamBean.namePlayer){
yourPlayerDAO.save(new Player(p,team))
}
//just declare in your entities the constructors that i have used `new Player(...)` , `new Team(..)`
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.