Получить данные с помощью некоторых фильтров в Spring Data JPA - PullRequest
0 голосов
/ 25 апреля 2020

Я изучаю данные весны jpa, и у меня есть две таблицы с именами TBL_PLAYER и TBL_TEAM. Также обратите внимание, что это уже существующие таблицы в базе данных. Что я хочу, чтобы получить данные игроков детали текущих команд. Я могу успешно добиться этого, используя следующий собственный запрос.

SELECT TBL_PLAYER.ID,
       TBL_PLAYER.NAME, 
       TBL_PLAYER.AGE, 
       TBL_PLAYER.TEAM_ID, 
       TBL_PLAYER.INCOME,  
FROM   TBL_PLAYER, TBL_TEAM
WHERE  (TBL_PLAYER.TEAM_ID = TBL_TEAM.TEAM_ID)

А вот текущее представление таблиц данных

TBL_PLAYER

| ID | NAME | AGE | TEAM_ID | INCOME |
  1    John   23       1       1000
  2    Ann    24       2       3000
  3    Sam    45       5       9000
  4    Nick   18       1       5000    

TBL_TEAM

| TEAM_ID | WINS |
     1       10
     5       60

Пожалуйста, также найдите мои java фрагменты кода.

@Entity
@Table(name = "TBL_PLAYER")
public class Player {

    @Id
    @Column(name = "ID")
    private long id;
    @Column(name = "NAME")
    private int name;
    @Column(name = "AGE")
    private int age;
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "TEAM_ID")
    private Team teamId;
    @Column(name = "INCOME")
    private int income;

    //setter and getters
}
@Entity
@Table(name = "TBL_TEAM")
public class Team {

    @Id
    @Column(name = "TEAM_ID")
    private int teamId;
    @Column(name = "WINS")
    private int wins;

    //setter and getters
}
@Repository
public interface PlayerRepository extends PagingAndSortingRepository<Player, Long> {

}

Когда я использую repository.findAll() it дает мне javax.persistence.EntityNotFoundException. Затем я попытался с FetchType.LAZY, и он вернул все строки данных, что не то, что я ищу.

Что я делаю не так или это то, что я пробую возможную вещь в данных весной jpa .

Любая помощь будет благодарна ..

1 Ответ

0 голосов
/ 25 апреля 2020

Я придумал следующее решение. Я использовал поддерживаемые ключевые слова в именах методов, как в Spring Data JPA документации .

Я добавил следующий код, который помог мне.

@Repository
public interface PlayerRepository extends PagingAndSortingRepository<Player, Long> {

    public long countByTeamIdIn(Collection<Team> teams);

    public List<Player> findByTeamIdIn(Collection<Team> teams);
}

Затем использовал repository.findByTeamIdIn(teams).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...