Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何返回非实体对象的列表并添加一个自定义变量,该变量将从hibernate查询中的属性文件中获取?_Java_Sql_Database_Hibernate_Spring Boot - Fatal编程技术网

Java 如何返回非实体对象的列表并添加一个自定义变量,该变量将从hibernate查询中的属性文件中获取?

Java 如何返回非实体对象的列表并添加一个自定义变量,该变量将从hibernate查询中的属性文件中获取?,java,sql,database,hibernate,spring-boot,Java,Sql,Database,Hibernate,Spring Boot,我需要返回一个CustomEmployee列表,其中我需要从属性文件中提取一个参数 我需要从实体员工查询CustomEmployee的所有其他参数 我的员工类别: @Data @NoArgsConstructor @AllArgsConstructor @Entity @Table(name="EMPLOYEE") public class Employee implements Serializable{ private static final long serialVersion

我需要返回一个CustomEmployee列表,其中我需要从属性文件中提取一个参数

我需要从实体员工查询CustomEmployee的所有其他参数

我的员工类别:

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name="EMPLOYEE")
public class Employee implements Serializable{

    private static final long serialVersionUID = 1859692418829710098L;

    @Id
    public Long id;

    public String name;
    public long salary;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CustomEmployee{

    public String name;
    public long salary;
    public String extra;
}
CustomEmployee类别:

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name="EMPLOYEE")
public class Employee implements Serializable{

    private static final long serialVersionUID = 1859692418829710098L;

    @Id
    public Long id;

    public String name;
    public long salary;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CustomEmployee{

    public String name;
    public long salary;
    public String extra;
}
我查询的服务:

@PersistenceContext
    private EntityManager entityManager;



    public List<CustomEmployee> retrieveCustomEmployee(){

        String dummy ="dummy"; //to be pulled from properties file

        String query = "SELECT new com.example.office.dto.CustomEmployee(" + 
        " emp.name, emp.salary, "+ dummy +" AS extra"+")"+" FROM Employee emp";

        TypedQuery<CustomEmployee> typeQuery = entityManager.createQuery(query, CustomEmployee.class);
        System.out.println("######"+ typeQuery.getResultList());

        return typeQuery.getResultList();

    }
你能指导我修理这个吗


谢谢。

看起来你可以用这个

String queryString = "SELECT NEW com.example.office.dto.CustomEmployee(" + 
    " emp.name, emp.salary, "+ dummy +" AS extra"+")"+" FROM Employee emp";
Query query = em.createQuery(queryString);
List<CustomEmployee> employees = query.getResultList();
String queryString=“选择新建com.example.office.dto.CustomEmployee(”+
“emp.name,emp.salary,“+dummy+”作为额外的“+””+“来自员工emp”;
Query Query=em.createQuery(queryString);
List employees=query.getResultList();

要解决第一个问题,我认为您只需在引号之间添加虚拟变量。如下图所示:

String query = "SELECT new com.example.office.dto.CustomEmployee(" + 
        " emp.name, emp.salary, '"+ dummy +"' AS extra"+")"+" FROM Employee emp";

我认为有两种可能性。第一个,lombok以不同的顺序生成构造函数,或者第二个,数据库中的工资字段不是数字。