obtenir la valeur maximum de la colonne en utilisant jpa critères de requête
Je veux obtenir la valeur maximale de la colonne relationId
de table ElementRelationType
J'ai écrit du code, mais sa présentation erreur
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")));
sélectionnez et max à la fois de donner de l'erreur
comment obtenir le nombre entier valeur 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);
}
et
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;
}
L'erreur obtenez-vous exactement?
OriginalL'auteur Surya | 2013-09-26
Vous devez vous connecter pour publier un commentaire.
Vous ne publiez pas les erreurs qui recevez-vous, donc, je suppose.
CriteriaBuilder.max accepte
Expression<N>
oùN extends Number
En même temps De la racine.obtenez de l' renvoie par défaut
Path<Object>
qui est inconvertible àExpression<Number>
.Afin de faire de votre appel à
max
travail, vous devez spécifier le paramètre générique pourroot.get
:ici vous pouvez remplacer
Number
, avec un type derelationId
(Long
,BigInteger
etc.)Mise à JOUR: @perissf adressée un autre problème avec votre code. Si vous allez sélectionner la valeur maximale (qui est numérique), vous devez déclarer votre
CriteriaQuery
comme une requête àNumber
pasElementRelationTypes
Je suis désolé, j'ai juste essayé de dire que votre réponse faits saillants de l'autre bon point. Je ne suis pas sûr de savoir comment il est mieux, mais il est certainement différente. Adresse de l'OP si vous pensez que votre réponse mérite d'être accepté. J'ai déjà voté jusqu'votre réponse de toute façon.
Pas de problème. Juste supprimé ma réponse lorsque de nouvelles informations sont arrivés!
Il n'est pas clair quelle est la cause de l'erreur ici. Peut-être vous devriez envisager de poster une autre question. N'oubliez pas d'inclure exactement ce qui ne fonctionne pas, les erreurs de compilateur (le cas échéant), à l'exception des messages et stacktraces (le cas échéant)
Pas sûr:
public Integer getRelationId()
. Je crois que c'est encore NumériqueOriginalL'auteur default locale