我正在努力寻找有关如何查询模型中更复杂属性的任何类型的文档。
例如我有
public class MyEmbedded{
@EmbeddedID
private MyEmbeddedPK embeddedPK;
}
@Embeddable
public class MyEmbeddedPK{
private Integer age;
private Integer zip;
}
在我的存储库中,我正在实现 CrudRepository 并希望能够做到
public List<MyEmbedded> findByageAndZip(String age, String zip);
但这似乎不起作用。该文档并没有真正说明有关 @EmbeddedId 的任何内容。查询 @OneToMany 属性也是如此,我从未找到任何相关内容。
我正在引用的文档。 http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repository-query-keywords
是否有关于此查询创建如何工作的更好文档?
最佳答案
我不确定 Spring Data Jpa 是否支持此功能,并且基于嵌入的 id 属性进行查询似乎有点复杂,因为它同样适用于封闭实体本身的状态字段。但这可以通过 JP QL 通过 Query 指定来轻松实现。和@Param
@Query("SELECT m FROM MyEmbedded m WHERE m.embeddedPK.age = :age AND m.embeddedPK.zip = :zip")
public List<MyEmbedded> findByageAndZip(@Param("age") String age, @Param("zip") String zip);
另外,不要忘记使用以下签名指定您的存储库,因为 Spring 数据运行时需要知道 ID 类的实际类型。
@Repository
public interface MyEmbeddedRepository extends CrudRepository<MyEmbedded, MyEmbeddedPK> {..}
关于java - 通过 @embeddedID 的 "query creation"方法构建 Spring Data JPA 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36803442/