bekommen Sie max-Wert der Spalte mit jpa criteria query
Ich möchte den maximalen Wert der Spalte relationId
aus der Tabelle ElementRelationType
Ich habe code geschrieben aber seine Angabe der Fehler
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")));
auswählen und max beide geben Fehler
wie man die integer max Wert
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);
}
und
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;
}
Welche Fehler bekommst du genau?
InformationsquelleAutor Surya | 2013-09-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du nicht posten, die Fehler machen, die Sie erhalten, so ich denke.
CriteriaBuilder.max akzeptiert
Expression<N>
woN extends Number
Gleichzeitig Root.erhalten standardmäßig gibt
Path<Object>
die inconvertible zuExpression<Number>
.So, um Ihren Ruf zu
max
Arbeit, die Sie angeben müssen, generische parameterroot.get
:hier können Sie ersetzen
Number
mit einem tatsächlichen Art derrelationId
(Long
,BigInteger
etc.)UPDATE: @perissf angesprochen ein weiteres Problem mit dem code. Wenn Sie gehen, wählen Sie maximaler Wert (numerisch) sollten Sie erklären Ihre
CriteriaQuery
wie eine Abfrage anNumber
nichtElementRelationTypes
Tut mir Leid, ich habe nur versucht, zu erwähnen, dass Ihre Antwort highlights andere sinnvoll. Ich bin mir nicht sicher wie es besser ist, aber es ist sicherlich anders. Adresse OP wenn Sie denken, dass Ihre Antwort verdient es akzeptiert zu werden. Ich habe schon gestimmt, bis Ihre Antwort sowieso.
Kein problem. Einfach gelöscht meine Antwort, wenn neue Informationen angekommen!
Es ist nicht klar, was die Ursache der Fehler hier. Vielleicht sollten Sie überlegen, zu veröffentlichen eine andere Frage. Vergessen Sie nicht das beinhalten, was genau funktioniert nicht, der compiler-Fehler (wenn überhaupt), Ausnahme-Nachrichten und stacktraces (wenn vorhanden)
Nicht sicher:
public Integer getRelationId()
. Ich glaube, es ist noch NumerischeInformationsquelleAutor default locale