JPA 查询部分字段
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JPA 查询部分字段相关的知识,希望对你有一定的参考价值。
参考技术A JPA默认得查询会把表里所有数据字段都返回这样会带来一些问题
1.数据量大的字段会导致mysql I/O问题
2.一些敏感的信息我们不应该直接返回给用户,这样的话我们查出来数据后还得手动过滤一遍
但是JPA在这方面并没有支持得很好,而mybatis可以利用resultMap,resultType
那么JPA里面要怎么做呢
一种是利用jpa的@Query
当然我们首先要创建要返回数据的DTO对象
然后使用HQL语句封装。
不我们可以看看JPA生成的sql
第二种是利用entityManager
生成的sql
如何编写基于作为父实体spring数据jpa的一部分的字段对结果进行排序的查询方法
在Spring数据JPA中,我们可以编写查询方法来执行查询。我有两个实体
class A
@Id
@Column
private String id;
private String name;
@ManyToOne
@JoinColumn(name = "b_field")
private B b;
class B
@Id
@KeyField
@Column
private String id;
private String b_field
我想编写一个查询方法“findByNameOrderByb_field”,即查找所有具有所提供名称的行,并根据B类字段(即b_field)对结果进行排序。写上面的函数不会返回有序的结果。有什么办法可以在spring boot中编写这个orderby方法。
public interface ARepository extends CrudRepository<A, String>
List<A> findByNameOrderByb_field(String name);
上述函数不会根据B的b_field返回有序结果。
答案
要访问B的属性,必须在查询方法的声明中包含B的字段名称。
public interface ARepository extends CrudRepository<A, String>
List<A> findByNameOrderByb_b_field(String name);
有关SpringData如何解析嵌套属性的更多信息,请参见:
以上是关于JPA 查询部分字段的主要内容,如果未能解决你的问题,请参考以下文章
带有嵌入式类型查询的 Mongo/DataNucleus/JPA 给出:找不到(部分)的类型...因为符号没有类型;隐式变量?