zoukankan      html  css  js  c++  java
  • 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();
    
  • 相关阅读:
    ContextMenustrip 控件
    Toolstrip 工具栏控件
    Menustrip控件和ContextMenustrip控件
    TabControl 选项卡控件
    GroupBox 分组框控件
    Pnel控件
    【bzoj3427】Poi2013 Bytecomputer dp
    【bzoj3174】[Tjoi2013]拯救小矮人 贪心+dp
    【bzoj1334】[Baltic2008]Elect 背包dp
    【bzoj1369】[Baltic2003]Gem 树形dp
  • 原文地址:https://www.cnblogs.com/luxh/p/2532679.html
Copyright © 2011-2022 走看看