Я работаю с данными пружины и использую Spring Boot 2.1.0.RELEASE и использую JPQL для запроса поля связанной / внедренной сущности для отношения @OneToMany
для связанного фильтра класса сущностей, но оно получает всевнедренный объект также использует fetch = FetchType.EAGER
, но не фильтрует связанный объект и загружает весь объект.Ниже приведены сущность и класс репо.
Первый класс сущности
@Entity
@Table(name = "USER")
public class UserEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, unique = true)
private String username;
@OneToMany(mappedBy = "user", targetEntity = AuthorityEntity.class, fetch = FetchType.LAZY, cascade=CascadeType.ALL)
private List<AuthorityEntity> authorities;
//Setter getter
}
Второй класс сущности
@Entity
@Table(name = "AUTHORITY")
public class AuthorityEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String authorityType;
private String textType;
@JsonBackReference
@ManyToOne(fetch = FetchType.LAZY, optional = false)
private UserEntity user;
//Setter getter
}
Интерфейс репозитория
@Repository
public interface UserRepo extends JpaRepository<UserEntity, Long> {
UserEntity findByUsernameAndAuthoritiesAuthorityType(String username, String authority);
}
Iтакже пробовал HQL @Query("select u from UserEntity u JOIN FETCH AuthorityEntity a on u.id = a.user where u.username = ?1 and a.authorityType = ?2")
, но он также выбирает все дочерние объекты, а не фильтрующие дочерние.
Дайте мне знать, где я не прав, требуется ли какая-либо конфигурация?