• JPA的查询语言—使用构造器


      如果我们只需要查询实体中的某些属性,但是不希望查询的结果返回的是对象数组,就可以使用JPQL通过实体的构造器进行查询,这样查询结果返回的就是实体。

      实体User.java:

    package com.cndatacom.jpa.entity;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.Table;
    
    @Entity
    @Table(name="t_user")
    public class User {
    	
    	/**
    	 * 主键
    	 */
    	@Id
    	@GeneratedValue
    	private Long id;
    	
    	/**
    	 * 名字
    	 */
    	@Column(name="name",length=50)
    	private String name;
    	
    	/**
    	 * 密码
    	 */
    	@Column(name="password",length=20)
    	private String password;
    	
    	/**
    	 * 邮箱
    	 */
    	@Column(name="email",length=50)
    	private String email;
    	
    	/**
    	 * 年龄
    	 */
    	@Column(name="age",length=3)
    	private int age;
    	
    	public User() {
    		
    	}
    	
    	//使用name属性和age属性的构造方法
    	public User(String name, int age) {
    		super();
    		this.name = name;
    		this.age = age;
    	}
    	
    	
    	//使用name属性、email属性和age属性的构造方法
    	public User(String name, String email, int age) {
    		super();
    		this.name = name;
    		this.email = email;
    		this.age = age;
    	}
    
    	//以下省略getter/setter方法
    	//......
    	
    }
    

      1、如果我们只是要查询User实体的name属性和age属性,先在User类中提供以这两个属性为参数的构造方法。再使用下面的语句进行查询:

    SELECT new User(u.name,u.age) FROM User u
    

      使用new User(u.name,u.age)使得返回的查询结果是实体的集合。

    String jpql = "SELECT new User(u.name,u.age) FROM User u";
    Query query = em.createQuery(jpql);
    List<User> resultList = query.getResultList();
    

        2、如果我们只是要查询User实体的name属性、email属性和age属性,先在User类中提供以这三个属性为参数的构造方法,再使用下面的语句进行查询:

    SELECT new User(u.name,u.email,u.age) FROM User u
    

      使用new User(u.name,u.email,u.age)使得返回的查询结果是实体的集合。

    String jpql = "SELECT new User(u.name,u.email,u.age) FROM User u";
    Query query = em.createQuery(jpql);
    List<User> resultList = query.getResultList();
    
  • 相关阅读:
    WUSTOJ 1247: 递增或递减排序(Java)
    WUSTOJ 1246: 字符串排序(Java)
    Oracle查询部门工资最高员工的两种方法 1、MAX()函数 2、RANK()函数
    Oracle数据库——用户(USER)
    Firefox在新标签页打开“书签”和“搜索栏”(无需插件)
    Oracle数据库——ROWNUM
    Oracle数据库 SET ECHO [ON|OFF]
    WUST Oracle数据库 实验一实验二
    优课在线 嵌入式系统(胡威)2018春季测验 参考解析
    Oracle数据库——查询所有用户
  • 原文地址:https://www.cnblogs.com/luxh/p/2532679.html
Copyright © 2020-2023  润新知