我在springboot项目中遇到了一个问题,我试图检索使用jpa规范实时处理的“票据”的统计信息。根据目的,车票有一定的处理天数。
以下是错误:
java.lang.NullPointerException: null
at com.ticketcorp.ticket.repository.TicketSpecification.lambda$isOntime$c9c337fb$1(TicketSpecification.java:208) ~[classes/:na]
我相信这是意料之中的,因为我在同一条线上得到了这个警告:
'Map<String, Integer>' may not contain keys of type 'Path<String>'
这是我的门票实体:
@Table(name = "tickets")
public class Ticket {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String code;
private String purpose;
@Lob
@Column(columnDefinition = "TEXT")
private String content;
@Lob
@Column(columnDefinition = "TEXT")
private String solution;
@Lob
@Column(columnDefinition = "TEXT")
private String comment;
private int status;
private LocalDateTime createdAt= LocalDateTime.now();
private LocalDateTime handledAt= LocalDateTime.now();
}
这是我的机票规格:
public class TicketSpecification {
public static Specification<Ticket> isOntime(ArrayList<Purpose> purposes) {
return (root, query, builder) -> {
/*Example of content for nameAndDurationMap: {Suggestion=25, Bug report=1}*/
Map<String, Integer> nameAndDurationMap = PurposeUtils.PurposeArrayToNameDurationMap(purposes);
return builder.le(
builder.diff(
builder.function("unix_timestamp", Long.class, root.get(Ticket_.handledAt)),
builder.function("unix_timestamp", Long.class, root.get(Ticket_.createdAt))
)
, nameAndDurationMap.get(root.get(Ticket_.purpose)) * 86400);/*Line 208*/
};
}
}
这是我的售票服务:
@Service
public class TicketService {
@Autowired
private TicketRepository ticketRepository;
public String countTicketsHandledOnTime(){
int handledStatus=2;
Specification<Ticket> allTicketHandledOnTimeQuery =where(TicketSpecification.isHandled(handledStatus)).and(TicketSpecification.isOntime(purposes));
return String.valueOf(ticketRepository.count(allTicketHandledOntimeQuery));
}
}
以下是POJO模型的目的:
public class Purpose{
private String id;
private String name;
private String description;
private int level;
private int duration;
}
这里是PurposeUtils:它需要一个目的列表,并生成一个目的哈希图,以及处理该目的的票据所需的天数。
public class PurposeUtils {
public static Map<String, Integer> PurposeArrayToNameDurationMap(ArrayList<Purpose> purposes) {
Map<String, Integer> purposeMap = new HashMap<String, Integer>();
for(Purpose purpose: purposes) {
purposeMap.put(purpose.getName(), purpose.getDuration());
}
return purposeMap;
}
}
我假设您使用javax.persistence.criteria.Root
在这一行中:
nameAndDurationMap.get(root.get(Ticket_.purpose)) * 86400);/*Line 208*/
注意留档的根:
路径
因此,你要求地图获取确实不存在的值
请注意,root不是值持有人,它是prdicat创建的值,因此在您的预测中,您将说我希望值X(root)满足Y条件
这将成为SQL查询,所以它必须是SQL可以处理的值,你的代码不会在每一张票上被调用...如果你想这样做,要么让它迭代每一个目的
(
if purpose_x == Ticket_.purpose and le(...)
or purpose_y == Ticket_.purpose and le(...)
)
或者将逻辑移到可以调用的DB函数
给出想法但可能不会运行的代码:
public class TicketSpecification {
public static Specification<Ticket> isOntime(ArrayList<Purpose> purposes){
return (root, query, builder) -> {
List<Predicate> predicates = new ArrayList<>();
for(Purpose purpose: purposes) {
predicates.add(isOntime(purpose.getName(), purpose.getDuration(),root, query, builder);
}
return builder.or(predicates.toArray(new Predicate[0]));
}
}
public static Predicate isOntime(String purposes_name,int purposes_time,Root<Ticket> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
return builder.and(
builder.equal(root.get(Ticket_.purpose),purposes_name)
,
builder.le(
builder.diff(
builder.function("unix_timestamp", Long.class, root.get(Ticket_.handledAt)),
builder.function("unix_timestamp", Long.class, root.get(Ticket_.createdAt))
)
,(purposes_time * 86400);/*Line 208*/
)
);
}
}
我已经编写了在android studio上显示可扩展列表视图的代码。以下是ExplandableListView的代码: 这是执行操作的方法: 它在函数定义中的“groupPosition”处显示警告: 当鼠标悬停在上面时,会显示
假设我有一张地图: “Assert类型中的方法assertThat(T,Matcher)不适用于参数(Map,Matcher>>>)” (以上是这里的解决方案:Hamcrest比较集合)
我遇到了一个奇怪的例外 '_InternalLinkedHashMap 我不知道怎么画地图 第一次运行代码时,它可以正常工作,因为它可以访问else部分。当它第二次应该访问第一个部件时,它会产生上述异常。 } 输出 FoodLog输出: {2021年8月3日:{早餐:{鱼片:{碳水化合物:0.0,脂肪:1.7,蛋白质:20.08,钙:95}},晚餐:{},零食:{},午餐:{} E/flatter
问题内容: 我正在尝试使用此Golang Yelp API软件包。在某些结构中,它使用guregu的null包中定义的类型。 我想声明一个在Yelp API包中定义的结构,其中的某些字段作为值使用(即,该结构,我正在尝试使用)。因此,在我的程序中,我同时导入了Yelp API包和guregu的null包,并尝试使用ip.Lat和ip.Lat为float64s声明该结构。(定义): 但是当我运行该程
NullPointerException且未连接适配器;每次我在GennMotion上测试此应用程序时,都会跳过布局。我读过与同一问题相关的其他问题,但没有任何帮助。 logcat 09-20 13:21:13.7384658-4658/com。实例基兰。detailapp E/AndroidRuntime:致命异常:主进程:com。实例基兰。detailapp,PID:4658 java。lan
我有一个使用Maven构建和管理依赖关系的Camel项目。我的项目依赖于Camel组件版本2.14.0。我已经将Spring依赖项与Camel匹配,并使用Spring组件版本3.2.11。但是,如果我将camel-test-spring版本2.14.0作为依赖项包含在测试范围中,它会将spring-beans版本4.0.7.release和spring-expression 4.0.7.relea