gpt4 book ai didi

java - 它需要在 Criteria API 中创建带有日期的谓词,但仍然出现异常。如何构建这样的谓词?

转载 作者:行者123 更新时间:2023-11-30 06:38:18 26 4
gpt4 key购买 nike

    private CriteriaBuilder criteriaBuilder;
private CriteriaQuery<Points> criteriaQuery;
private Root<Points> root;

@PostConstruct
private void init() {
criteriaBuilder = entityManager.getCriteriaBuilder();
criteriaQuery = criteriaBuilder.createQuery(Points.class);
root = criteriaQuery.from(entityManager.getMetamodel().entity(Points.class));
}
public void t(Date lowerLimit, Date upperLimit) {
Predicate startPredicate = criteriaBuilder.greaterThanOrEqualTo(root.<Date>get(Points_.createdOn), lowerLimit);
}

异常:java.lang.NullPointerException: null 在 org.hibernate.query.criteria.internal.path.Abs​​tractPathImpl.get(AbstractPathImpl.java:123)

我使用hibernate 5.2.10.Final版本。

根不为空: enter image description here

元模型和实体位于同一个包中: enter image description here

积分_等级:

package ...domain.points.model;
@StaticMetamodel(Points.class)
public class Points_ {
public static volatile SingularAttribute<Points, Date> createdOn;
....
}

积分等级:

package ...domain.points.model;
@Entity
@Table(name = "POINTS")
public class Points extends AuditingEntity {
...
}

审计实体类:

@Audited
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class AuditingEntity implements Serializable {
@CreatedDate
@Column(name = "CREATED_ON")
protected Date createdOn;
......
}

最佳答案

https://stackoverflow.com/a/20097800/4587961

元模型和实体是否在同一个包中? Points_Points你说

现在,让我们尝试用字符串字段名称替换元模型。

 Predicate startPredicate = criteriaBuilder.greaterThanOrEqualTo(root.<Date>get("createdOn"), lowerLimit);

我只是想看看它是否有效,然后继续寻找解决方案。

检查这个 https://stackoverflow.com/a/4256642/4587961

<小时/>

恐怕 Hibernate 中有一个错误 https://hibernate.atlassian.net/browse/HHH-9259

我使用了硬编码字符串。我将创建一个包含 Point 中所有字段的类 PointTable。这些类可以位于不同的包中。

package entities;

public class Point {

private Long id;
//Other fields.

@ID
@Column(PointTable.ID)
public Long getId() {
return id;
}

//Other getters and setters.
}

点表

package entities.table;

public class PointTable {

public static final String ID = "id";
public static final String CREATED_ON = "createdOn";
//Other fields.
}

关于java - 它需要在 Criteria API 中创建带有日期的谓词,但仍然出现异常。如何构建这样的谓词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44847075/

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