Spring Data JPA 多對多表查詢


1.新建一個Spring Initializr項目,勾選Lombok,Spring Web,Spring Data JPA和MySQL Driver依賴。

這里我的表關系是goods商品表-goods_card-card卡牌表

2.新建實體類Goods.java和Card.java,這里注意不要使用Lombok的@Data注解,改用@Setter和@Getter

package com.wts.bloodline.entity;

import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;

import javax.persistence.*;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Entity
@Getter
@Setter
@DynamicInsert
@DynamicUpdate
public class Goods {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private Integer district;
    private String channel;
    private BigDecimal price;
    private String username;
    private String password;
    private String remarks;
    private Date createTime;
    private Date updateTime;
    @ManyToMany
    @JoinTable(name = "goods_card",
            joinColumns = {@JoinColumn(name = "goods_id", referencedColumnName = "id")},
            inverseJoinColumns = {@JoinColumn(name = "card_id", referencedColumnName = "id")})
    private List<Card> cardList;
}
package com.wts.bloodline.entity;

import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;
import java.util.List;

@Entity
@Getter
@Setter
public class Card {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String type;
    private String job;
    @ManyToMany
    @JoinTable(name = "goods_card",
            joinColumns = {@JoinColumn(name = "card_id", referencedColumnName = "id")},
            inverseJoinColumns = {@JoinColumn(name = "goods_id", referencedColumnName = "id")})
    private List<Goods> goodsList;
}

3.創建對應的repository:

package com.wts.bloodline.repository;

import com.wts.bloodline.entity.Goods;
import org.springframework.data.jpa.repository.JpaRepository;

public interface GoodsRepository extends JpaRepository<Goods, Long> {
}
package com.wts.bloodline.repository;

import com.wts.bloodline.entity.Card;
import org.springframework.data.jpa.repository.JpaRepository;

public interface CardRepository extends JpaRepository<Card, Long> {
}

4.修改配置application.yml:

server:
  port: 9090
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/bloodline
    username: root
    password: ''
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    show-sql: true
    open-in-view: true
    properties:
      hibernate:
        format_sql: true
        enable_lazy_load_no_trans: true

5.測試


免責聲明!

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



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