我正在使用Spring Boot,我有这些实体:
@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();
}
当我去网址时: http://localhost:8080/api/usuario/我得到了estactiv = true的用户:
但是当我去http://localhost:8080/api/usuario/1/roles时,我得到了这个:
我只想为每个用户获取estactiv = true的角色,例如:
用户admin(id = 1)在我的角色表中有两个角色:user(false)和admin(true),但是当我去/ api / usuario / 1 / roles我只想得到admin(真)
我希望我的问题很明确,如果没有,请告诉我以解决问题。在此先感谢您的帮助。
答案 0 :(得分:0)
您需要在角色查询中添加表ztotal = np.concatenate([np.fliplr(z),z],axis=1)
ztotal = np.concatenate([np.flipud(ztotal),ztotal],axis=0)
xtotal = np.concatenate([-x[::-1],x],axis=0)
ytotal = np.concatenate([-y[::-1],y],axis=0)
plt.figure()
plt.contourf(xtotal,ytotal,ztotal)
plt.show()
的连接,以便过滤usario
表的estactiv
属性。查询应如下所示:
usario
答案 1 :(得分:0)
尝试进一步过滤列表,使用Query string
并将参数作为URL中的查询字符串传递,如下所示:
http://localhost:8080/api/usuario/1/roles?estactiv=true.
现在,您可以根据此查询字符串过滤输出结果尝试通过编写新的查询/代码来过滤您的数据。
答案 2 :(得分:0)
我正在阅读文档,我找到了解决方案:
首先在我的RolesRepository中,我声明了这个方法:
public Collection<Roles> findByEstactivTrueAndUserId(@Param("user") Integer
user);
然后在我的UserController中:
@GetMapping("/api/usuario/{userId}/roles")
public Collection<Roles> getRoles(@PathVariable Integer userId) {
return rolRepo.findByEstactivTrueAndUserId(userId);
}
当我转到http://localhost:8080/api/usuario/1/roles时,对于id = 1的usuario,我只获得estactiv = true的角色。