@OneToMany 一對多 通過表之間的鏈接


https://blog.csdn.net/qq_38157516/article/details/80146547

一對多

一個人對多張卡,但是一張卡只能對應一個人,典型的一對多關系,下面就用OneToMany來自動生成sql語句

首先建表s_person和s_card表

 

s_card表

 

然后在創建一張表關聯兩張表的關系s_person_card,P_ID為s_person的id,C_ID為s_card的id

 

 

建Person.java實體類

@Entity
@Table(name="s_person")
public class Person {

@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Id
private String id;
private String username;
private String age;


//JoinTable的name是中間表的名字
@OneToMany(fetch=FetchType.EAGER)
@JoinTable(name="s_person_card",joinColumns={@JoinColumn(name="p_id")}
,inverseJoinColumns={@JoinColumn(name="c_id")})
private List<Cards> cards;

public List<Cards> getCards() {
return cards;
}
public void setCards(List<Cards> cards) {
this.cards = cards;
}

public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}

然后是cards表

@Entity
@Table(name="s_card")
public class Cards {
private String id;
private String num;

@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Id
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}

}
新建接口

public interface PersonRepository extends JpaRepository<Person, String>{


Person findById(String id);

}
測試

        @RequestMapping("/person")
@ResponseBody
public Person person(){
Person person=personRepository.findById("12323423");
List<Cards> cards = person.getCards();
for (Cards card : cards) {
System.out.println(card.getId());
System.out.println(card.getNum());
}
return person;
}

 


結果正常打印,發了兩條sql語句,沒有手動寫sql

 

只是測試的onetomany,有點復雜,如果在cards類中添加用manytoone就不用創建中間表
————————————————
版權聲明:本文為CSDN博主「窮水叮咚」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_38157516/article/details/80146547


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM