如何解决使用桥表时进行HQL查询?
Am使用桥表而不创建中间桥类。
地址有一个addressStatus
字段。尝试使用addressStatus查询用户> UserAddressBridge>地址。
@Table(name = "user")
public class User {
..
@ManyToMany(fetch = FetchType.LAZY,cascade = {CascadeType.MERGE,CascadeType.DETACH})
@JoinTable(
name = "user_address",joinColumns = { @JoinColumn(name = "user_id")},inverseJoinColumns = { @JoinColumn(name = "address_id")}
)
@JsonIgnore
private final List<Address> addresses = new ArrayList<Address>();
@ManyToMany(fetch = FetchType.LAZY,CascadeType.DETACH})
@JoinTable(
name = "reports",inverseJoinColumns = { @JoinColumn(name = "reports_id")}
)
@JsonIgnore
private final List<Reports> reports = new ArrayList<Reports>();
}
我无法弄清楚如何编写一个JPA查询来使用网桥类,因为它不是物理实体对象。这就是我尝试将用户拉到用户地址是传递的ID的方式。但是,由于我们使用上述语法“导航”到中间桥表-如何编写JPA查询?还是我别无选择,只能求助于本机查询?
公共接口UserRepository扩展了PagingAndSortingRepository
@Query(value = "SELECT user FROM User address,<<UserAddress address>> WHERE address.addressId = :addressId")
public Page<User> findCasesByStatus(Pageable pageable,@Param("addressId") Long addressId);
}
***编辑:感谢您的建议。这工作了**** 我只需要使用JPA正确构建我的方法名称,如下所示。 _很重要。
public AddressRepository extends CrudRepository<Address,Long> {
public Page<User> findByAddresses_AddressStatus(Pageable pageable
Byte addressStatus);
}
解决方法
您不需要定义查询。 spring-data-jpa
可以根据方法名称自动生成。
public interface UserRepository
extends PagingAndSortingRepository<User,Long> {
public Page<User> findByAddressesAddressId(Long addressId,Pageable pageable);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。