我调用下面的方法来计算一些值。我提供agencyID和月份的整数表示来执行计算。
Map jan = new HashMap();
String a[] = shifts.getAgencyActiveAgentsByMonth(agencyID, 1).split(",");
jan.put("label", "Jan");
jan.put("active", a[0]);
jan.put("inactive", a[1]);
activeInactiveGraphData.add(jan);
Map feb = new HashMap();
a = shifts.getAgencyActiveAgentsByMonth(agencyID, 2).split(",");
feb.put("label", "Feb");
feb.put("active", a[0]);
feb.put("inactive", a[1]);
activeInactiveGraphData.add(feb);
等等...直到我到达12月(值12)。然而,当我到达5月(月值5)时,代码给出了一个运行时错误。然而,奇怪的是这个错误被抛出
java.sql.SQLException: Column 'shift_dayid' not found.
在我的查询中,我没有在查询中的任何位置包含shift\u dayId,如下所示:
@Query(value = "select distinct userid from shift_days where agencyid = :agencyID and month(created_at) = :givenMonth and shift_status = 1", nativeQuery=true)
List<ShiftDaysModel> getAgencyActiveAgentsCountForMonth(@Param("agencyID") String agencyID, @Param("givenMonth") int givenMonth);
我恳请帮助我确定为什么givenMonth在值大于4时抛出运行时异常。
谢谢你
编辑
这是我要求的ShiftDaysModel。。。
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
/**
*
* @author Javalove
*/
@Entity
@Getter
@Setter
@NoArgsConstructor
@Table(name = "shift_days")
public class ShiftDaysModel implements Serializable {
public static enum RequestStatus {
PENDING, ACCEPTED, COMPLETED, REJECTED, TRANSFERED, IN_PROGRESS, VALIDATED;
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long shiftDayID;
@Column(name = "created_at", updatable=false)
@CreationTimestamp
@Temporal(javax.persistence.TemporalType.TIMESTAMP)
private Date createdAt;
@Column(name = "updated_at")
@UpdateTimestamp
@Temporal(javax.persistence.TemporalType.TIMESTAMP)
private Date updatedAt;
@Column(name = "userID")
private String userID;
@Column(name = "agencyID")
private String agencyID;
@Basic
@Column(name = "shiftDate")
private LocalDate shiftDate;
@Basic
@Column(name = "startTime")
private LocalTime startTime;
@Basic
@Column(name = "endTime")
private LocalTime endTime;
@Column(name = "shiftOptionID")
private String shiftOptionID;
@Column(name = "shiftStatus")
private RequestStatus shiftStatus;
@Column(name = "isTransferred")
private boolean isTransferred;
@Column(name = "transferredFromID")
private String transferredFromID;
@Column(name = "shiftID")
private String shiftID;
@Column(name = "shiftRate")
private Double shiftRate;
@Column(name = "siteID")
private String siteID;
@Basic
@Column(name = "actualStartDateTime")
private LocalDateTime actualStartDateTime;
@Basic
@Column(name = "actualEndDateTime")
private LocalDateTime actualEndDateTime;
@Column(name = "shiftRequestGroupID")
private String shiftGroupID = "0";
}
当您使用签名时:
@Query(..)
List<ShiftDaysModel> getAgencyActiveAgentsCountForMonth(...);
预期select子句将包含创建实体ShiftDaysModel所需的所有字段。
在您的例子中,查询只选择列userid。当Hibernate/Spring试图将每一行转换为一个ShiftDaysModel时,它会抛出异常,因为对应于shift\u dayid的字段没有值。
如果您将查询更改为从shift\u days中选择distinct*,这可能会起作用…
或者,如果您只关心用户ID:
@Query(..)
List<String> getAgencyActiveAgentsCountForMonth(...)
我已经在这个问题上绞尽脑汁好几天了,我正在使用google sheets表单中的查询功能来提取数据的子集,但是查询是有效的,如果我在特定的几个字段中添加一个值,查询结果都是不可靠的(技术术语)。公式如下: 但是,如果我在P列(这些屏幕截图中的第5列)中添加另一个值,我会得到一些奇怪的行为: 数据本身是零星的,因为并非所有字段都将被填充,所以我的where子句只提取not空值。这些值也是数字和文本的
问题内容: 我想在加载了感谢的场景中找到VBox节点,但出现以下异常: 代码 : fxml文件: 我想知道: 1.为什么查找方法返回a 而不是a ? 2.我怎样才能得到另一种方式? 提前致谢 问题答案: SplitPane将所有项目放在单独的堆栈窗格中(用表示)。出于未知原因,FXMLLoader为它们分配与root子代相同的ID。您可以通过下一个实用程序方法获得所需的VBox: } 并以其他方式
当标题[currSlotNo]的值为空时,该行将导致错误: } HomeVu1.VdslotService updVideoSlotData pictureInst:331 Picid[currSlotNo]:331 HomeVu1.VdslotService updVideoSlotData Picmk:331 HomeVu1.VdslotService updVideoSlotData aud
使用执行hql查询时出现错误 我的疑问是 堆栈跟踪是
我想这样写一个hql 因为我是新手,请帮帮我
问题内容: 如果我在SQL Server Express 2008上运行此查询: 它将日期存储为2011年4月11日 我该如何预防呢? 问题答案: 使用ISO-8601格式:(或)-无论您使用哪种SQL Server语言和区域设置,它始终有效。 SQL Server中的日期 不 以任何特定的面向字符串的格式存储-日期即是日期即是日期,无论您看到什么。 您会看到日期的字符串表示形式-但又一次:日期