gpt4 book ai didi

java - 非法参数异常 : argument type mismatch in Hibernate while using AliasToBeanResultTransformer and MySQL UNION SQLQuery

转载 作者:行者123 更新时间:2023-11-29 18:03:38 25 4
gpt4 key购买 nike

我在 Hibernate 中使用 AliasToBeanResultTransformer 进行以下查询,它有效
SQL 查询 1

//Query 1
final String GET_ASSIGNMENT_STATUS =
"select distinct wtd.work_task_detail_id as workTaskDetailId, wtd.assigned_task as assignedTask, "
+ "e.emp_id as employeeId, concat( e.first_name,' ',e.last_name ) as employeeName, "
+ "wtd.deadline_date as deadlineDate, a.code_name as workTaskStatusName, a.code_id as workTaskStatusId, "
+ "wtd.completion_date as completionDate, wtd.priority as priority "
+ "from work_task_detail wtd "
+ "join allcode a on a.code_id = wtd.work_task_status "
+ "join employee e on e.emp_id = wtd.team_member_id "
+ "where wtd.work_task_detail_id = :assignmentId";

如果我在 MySQL union 查询中使用相同的选择条件,它会给我异常 IllegalArgumentException:参数类型不匹配

SQL 查询 2

//Query 2           
final String GET_ASSIGNMENT_STATUS =
"select distinct wtd.work_task_detail_id as workTaskDetailId, wtd.assigned_task as assignedTask, "
+ "e.emp_id as employeeId, concat( e.first_name,' ',e.last_name ) as employeeName, "
+ "wtd.deadline_date as deadlineDate, a.code_name as workTaskStatusName, a.code_id as workTaskStatusId, "
+ "wtd.completion_date as completionDate, wtd.priority as priority "
+ "from work_task_detail wtd "
+ "join logs l on wtd.work_task_detail_id = l.tran_id and l.transaction='ASGNMT' "
+ "join user u on u.user_id = l.user_id "
+ "join employee e on e.emp_id = u.emp_id "
+ "join allcode a on a.code_id = wtd.work_task_status "
+ "where wtd.work_task_detail_id = :assignmentId and l.user_id = :userId "
+ "union "
+ "select distinct wtd.work_task_detail_id as workTaskDetailId, wtd.assigned_task as assignedTask, "
+ "e.emp_id as employeeId, concat( e.first_name,' ',e.last_name ) as employeeName, "
+ "wtd.deadline_date as deadlineDate, a.code_name as workTaskStatusName, a.code_id as workTaskStatusId, "
+ "wtd.completion_date as completionDate, wtd.priority as priority "
+ "from work_task_detail wtd "
+ "join allcode a on a.code_id = wtd.work_task_status "
+ "join employee e on e.emp_id = wtd.team_member_id "
+ "where wtd.work_task_detail_id = :assignmentId and wtd.team_member_id = ( select emp_id from user uu where uu.user_id = :userId )";

为什么使用UNION会导致以下异常?
日志

05-01-2018 12:14:57 320 org.hibernate.property.access.spi.SetterMethodImpl.set(SetterMethodImpl.java:97) 
HHH000123: IllegalArgumentException in class: support.dto.AssignmentStatus, setter method of property: priority
05-01-2018 12:14:57 324 org.hibernate.property.access.spi.SetterMethodImpl.set(SetterMethodImpl.java:98)
HHH000091: Expected type: boolean, actual value: java.lang.Byte

另一个

05-01-2018 12:14:57 342 support.DAO.ImplDeveloperDAO.getAssignmentStatus(ImplDeveloperDAO.java:1916) 
Message :- IllegalArgumentException occurred while calling setter for property [support.dto.AssignmentStatus.priority (expected type = boolean)]; target = [support.dto.AssignmentStatus@11643c8], property value = [0] setter of support.dto.AssignmentStatus.priority
05-01-2018 12:14:57 345 support.DAO.ImplDeveloperDAO.getAssignmentStatus(ImplDeveloperDAO.java:1917)
Root Cause :- java.lang.IllegalArgumentException: argument type mismatch
05-01-2018 12:14:57 346 support.DAO.ImplDeveloperDAO.getAssignmentStatus(ImplDeveloperDAO.java:1918)
************************************************************

到目前为止我尝试过的

  1. 我在选择条件中使用了 if( wtd.priority = 0, FALSE, TRUE )
  2. 我还尝试了两个重载的 priority setter ,一个参数为 byte,另一个参数为 BigInteger

最佳答案

我提到了this answer仍然遇到问题,有建议
期望类型:boolean,实际值:java.lang.String

所以我为我的字段priority重载了一个setter方法,接受String作为参数。现在它按预期工作了。

public void setPriority(String priority) {
this.priority = "true".equals(priority);
}

谢谢。

关于java - 非法参数异常 : argument type mismatch in Hibernate while using AliasToBeanResultTransformer and MySQL UNION SQLQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48108827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com