Java 如何返回非实体对象的列表并添加一个自定义变量,该变量将从hibernate查询中的属性文件中获取?
我需要返回一个CustomEmployee列表,其中我需要从属性文件中提取一个参数 我需要从实体员工查询CustomEmployee的所有其他参数 我的员工类别: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
@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以不同的顺序生成构造函数,或者第二个,数据库中的工资字段不是数字。