簡體   English   中英

Spring data jpa如何過濾結果的子對象?

[英]Spring data jpa How to filter the child objects of the result?

Spring data jpa如何過濾結果的子對象?

@Entity
public class Player {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

private String name;

@OneToMany(mappedBy = "player")
private List<PlayerItem> playerItems;

public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public List<PlayerItem> getPlayerItems() {
    return playerItems;
}

public void setPlayerItems(List<PlayerItem> playerItems) {
    this.playerItems = playerItems;
}
}

@Entity
public class PlayerItem {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

private String name;

private Boolean begin;

@ManyToOne
@JoinColumn(name = "play_id")
@JsonIgnore
private Player player;

public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public Boolean getBegin() {
    return begin;
}

public void setBegin(Boolean begin) {
    this.begin = begin;
}

public Player getPlayer() {
    return player;
}

public void setPlayer(Player player) {
    this.player = player;
}
}

public interface PlayerRepository extends JpaRepository<Player, Integer> {
List<Player> findByPlayerItemsName(String name);
}

@RestController
public class TestQcController {
@Resource
PlayerRepository repository;

@PostMapping("test")
public Object testQc() {
    List<Player> players = repository.findByPlayerItemsName("dada");
    return players;
}
}

JSON結果

[{
    "id": 1,
    "name": "haha",
    "playerItems": [{
        "id": 1,
        "name": "dada",
        "begin": false
    }, {
        "id": 2,
        "name": "wawa",
        "begin": true
    }]
}]

預期:

[{
    "id": 1,
    "name": "haha",
    "playerItems": [{
        "id": 1,
        "name": "dada",
        "begin": false
    }]
}]

實際:

[{
    "id": 1,
    "name": "haha",
    "playerItems": [{
        "id": 1,
        "name": "dada",
        "begin": false
    }, {
        "id": 2,
        "name": "wawa",
        "begin": true
    }]
}]

@OneToMany @Where(clause = "name='data'") private List<PlayerItem> dataPlayerItems;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM