私は春のブートを使用していると私はそれらのエンティティがあります。"親エンティティ"から検索するときの値でSpringリポジトリの結果をフィルタリングする方法は?
@Entity
@Table(name = "usuario")
@NamedQuery(name = "Usuario.findAll", query="select u from Usuario u where
u.estactiv=true order by u.user")
public class Usuario implements Serializable{
...
@Column(name="usu_estactiv",nullable=false)
private boolean estactiv=true;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
@JsonManagedReference
private List<Roles> roles = new ArrayList<>();
...}
@Entity
@Table(name = "roles")
@NamedQuery(name = "Roles.findAll", query="select r from Roles r where
r.estactiv=true order by r.descripcion")
public class Roles implements Serializable{
...
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(columnDefinition="integer", name="usu_id", nullable=false)
@JsonBackReference
private Usuario user;
@Column(name="rol_estactiv",nullable=false)
private boolean estactiv=true;
...}
そして、私のリポジトリ内を:
@RepositoryRestResource(collectionResourceRel = "usuario", path = "usuario")
public interface UserRepository extends PagingAndSortingRepository<Usuario,
Integer> {
@Override
@Query
public Page<Usuario> findAll(Pageable pageable);
Usuario findByUserAndEstactivTrue(@Param("user") String user);
}
@RepositoryRestResource(collectionResourceRel = "roles", path = "roles")
public interface RolesRepository extends
PagingAndSortingRepository<Roles,Integer>{
@Override
@Query
public Page<Roles> findAll(Pageable pageable);
@Override
@Query
public Iterable<Roles> findAll();
}
私がURLにアクセスしてください。 http://localhost:8080/api/usuario/私は、ユーザーestactivで取得=真:
が、私はhttp://localhost:8080/api/usuario/1/rolesに行くとき、私はトンを得ました彼:
そして、私はちょうど、各ユーザーための真の役割estactivと=、例えば取得するをしたい:
ユーザーadmin(ID = 1)は、2つの役割を持っているユーザ(偽)と私の役割のテーブルのadmin(真)が、私は/ api/usuario/1/rolesに行くとき私はちょうど(本当)adminを取得したい
私は私の質問が明確であることを願っています私はそれを修正するために知っている。あなたの助けを前にありがとう。
こんにちは、@NamedQuery(org.hibernate.HibernateException:名前付きクエリのエラー:Roles.findAll)で内部結合を追加するとエラーが発生し、estactiv trueのロールだけが必要ですたとえば、私が/ api/usuario/1/rolesに行くときにユーザーadmin(wit id 1)のために、私はただestactivでロールを欲しい – silver1991