我想relationId从表中获取列的最大值ElementRelationType
我已经编写了代码,但它给出了错误
CriteriaBuilder cb1 = entityManager.getCriteriaBuilder();
CriteriaQuery<ElementRelationTypes> cq1 = cb1.createQuery(ElementRelationTypes.class);
Root<ElementRelationTypes> root = cq1.from(ElementRelationTypes.class);
cq1.select(cb1.max(root.get("relationId")));
Run Code Online (Sandbox Code Playgroud)
select和max都给出了如何获得整数最大值的错误
public class ElementRelationTypes {
private RelationId relationLangPK=new RelationId();
private Country country;
private Status status;
@EmbeddedId
public RelationId getRelationLangPK() {
return relationLangPK;
}
public void setRelationLangPK(RelationId relationLangPK) {
this.relationLangPK = relationLangPK;
}
@Transient
public Integer getRelationId() {
return getRelationLangPK().getRelationId();
}
public void setRelationId(Integer relationId) {
getRelationLangPK().setRelationId(relationId);
}
@Transient
public Language getLanguage() {
return getRelationLangPK().getLanguage();
}
public void setLanguageCode(Language language) {
getRelationLangPK().setLanguage(language);
}
Run Code Online (Sandbox Code Playgroud)
和
public class RelationId implements Serializable {
private static final long serialVersionUID = 1L;
private Integer relationId;
private Language language;
@JoinColumn(name=PersistenseConstants.ELEMENT_RELATION_TYPE_COL_RELATION_ID)
public Integer getRelationId() {
return relationId;
}
public void setRelationId(Integer relationId) {
this.relationId = relationId;
}
@OneToOne
@JoinColumn(name=PersistenseConstants.LANGUAGE_ENTITY_COL_LANG_CODE)
public Language getLanguage() {
return language;
}
public void setLanguage(Language language) {
this.language = language;
}
Run Code Online (Sandbox Code Playgroud)
def*_*ale 11
你没有发布你收到的错误,所以我不得不猜.
CriteriaBuilder.max接受Expression<N>在哪里N extends Number
同时Root.get默认返回Path<Object>哪个是不可转换的Expression<Number>.
因此,要使您的max工作调用,您需要将泛型参数指定为root.get:
cq1.select(cb1.max(root.<Number>get("relationId")));
Run Code Online (Sandbox Code Playgroud)
在这里你可以替换Number与实际类型的relationId(Long,BigInteger等等)
更新: @perissf 解决了您的代码的另一个问题.如果要选择最大值(数字),则应将您CriteriaQuery的查询声明为Number不是ElementRelationTypes
| 归档时间: |
|
| 查看次数: |
20321 次 |
| 最近记录: |