spring data jpa 查询部分属性
2016-09-26 15:07
351 查看
两个方法:1、使用自定义的sql查询;2、封装一个类用于输出。
Dao:
方法一的对应的Entity的写法:
方法二中的对应输出类:
Dao:
@Service public class OperatorServiceImpl implements OperatorService { @Autowired OperatorRepository operatorRepository; public OperatorRepository getOperatorRepository() { return operatorRepository; } private EntityManagerFactory emf; @PersistenceUnit public void setEntityManagerFactory(EntityManagerFactory emf) { this.emf = emf; } //方法1 @Override public List<Operator> list() throws Exception { EntityManager em = emf.createEntityManager(); Query query = em.createNamedQuery("getUsers"); List<Object[]> list = (List<Object[]>) query.getResultList(); List<Operator> operatorList = CastEntity.castEntity(list, Operator.class); em.close(); return operatorList; // Sort s = new Sort(Sort.Direction.DESC,"id"); // return operatorRepository.findAll(); } //方法2: @Override public List<SimpleOperator> listOperator() { EntityManager em = emf.createEntityManager(); Query query = em.createQuery("select new com.jiapeng.xfw.server.normalClass.SimpleOperator(p.userId,p.name,p.userType) from Operator p order by p.userId desc"); List result = query.getResultList(); return result; } }
方法一的对应的Entity的写法:
@NamedNativeQueries({ @NamedNativeQuery(name = "getUsers", query = "select id,username,usertype from t_xfw_operator order by id desc", resultSetMapping = "usersMap") }) @SqlResultSetMappings({ @SqlResultSetMapping(name = "usersMap", entities = {}, columns = { @ColumnResult(name = "id"), @ColumnResult(name="username"), @ColumnResult(name="usertype") }) }) @Entity @Table(name = "operator") public class Operator { @Id @GeneratedValue @Column(name = "id") private int userId; @Column( name = "userName", unique = true,nullable = false) private String name; @Column(name = "passWord") private String passWord; @Column(name = "userType") @Enumerated(value = EnumType.ORDINAL) private EnumOperatorType userType; @ManyToMany( fetch = FetchType.LAZY, targetEntity = com.jiapeng.xfw.server.entity.Rights.class) @JoinTable(name = "operator_rights", joinColumns = {@JoinColumn(name = "user_id",referencedColumnName = "id")}, inverseJoinColumns = {@JoinColumn(name = "right_id",referencedColumnName = "id")} ) @OrderBy("id") private List<Rights> rightses; public List<Rights> getRightses() { return rightses; } public void setRightses(List<Rights> rightses) { this.rightses = rightses; } public EnumOperatorType getUserType() { return userType; } public void setUserType(EnumOperatorType userType) { this.userType = userType; } public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassWord() { return passWord; } public void setPassWord(String passWord) { this.passWord = passWord; } public Operator(){ super(); } public Operator(Integer id,String username){ super(); this.userId=id; this.name= username; } //这个构造函授必须 public Operator(Integer id,String username,Integer userType){ super(); this.userId=id; this.name= username; this.userType = EnumOperatorType.valueOf( userType); } }
方法二中的对应输出类:
public class SimpleOperator { private Integer userId; private String name; private EnumOperatorType userType; public EnumOperatorType getUserType() { return userType; } public void setUserType(EnumOperatorType userType) { this.userType = userType; } public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } public String getName() { return name; } public void setName(String name) { this.name = name; } //这个构造函授必须,注意userType的类型为Object public SimpleOperator(int userId,String name,Object userType){ super(); this.userId = userId; this.name = name; this.userType = (EnumOperatorType)userType; } }
相关文章推荐
- Spring Data JPA的findBy函数不能对部分属性查询
- Spring data jpa高级查询,部分字段查询,过滤查询,空字符过滤
- 【SpringBoot学习笔记】SpringBoot_03_SpringData—JpaRepository部分字段查询功能
- spring-data-jpa只查询实体部分字段
- Spring Data Jpa 自定义属性查询规则
- spring-data-jpa 多条件查询 学习记录
- Spring Data JPA教程, 第七部分: Pagination(未翻译)
- Spring技术内幕之Spring Data JPA-查询方式
- Spring data JPA中使用Specifications动态构建查询
- Spring Data JPA教程, 第五部分: Querydsl(未翻译)
- Spring Data Jpa 使用@Query标注自定义查询语句
- 一步一步学SpringDataJpa——JpaRepository查询功能
- Spring Data JPA 复杂/多条件组合查询
- spring-data-jpa Specification 拼接复杂查询
- Spring Data JPA教程, 第六部分: Sorting(未翻译)
- spring data jpa 创建方法名进行简单查询
- spring data jpa的动态查询封装(转)
- Spring data jpa sort多属性排序问题
- 基于JPA规范的spring-data-jpa面向对象的查询方法举例
- 【spring data jpa】带有条件的查询后分页和不带条件查询后分页实现