我需要返回一个 CustomEmployee 列表,我需要从属性文件中提取一个参数。
我需要从实体 Employee 查询 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;
CustomEmployee 类:
@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 query = "SELECT new com.example.office.dto.CustomEmployee(" +
" emp.name, emp.salary, 'dummy' AS extra"+")"+" FROM Employee emp";
你能指导我解决这个问题吗?
谢谢。
最佳答案
要解决第一个问题,我认为您只需在引号之间添加虚拟变量即可。如下所示:
String query = "SELECT new com.example.office.dto.CustomEmployee(" +
" emp.name, emp.salary, '"+ dummy +"' AS extra"+")"+" FROM Employee emp";
关于java - 如何返回不是实体的对象列表并添加一个自定义变量,该变量将从 hibernate 查询中的属性文件中获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58310485/