Die optimale Lösung ist die Verwendung eines Hibernate-Kriteriums anstelle von fest codierten SQL-Abfragen. Sie sollten eine Annotation @Entity für Ihre Benutzerklasse deklarieren und private Felder erstellen, die den Spalten Ihrer Tabelle entsprechen.
Angenommen, Sie haben eine Benutzertabelle mit einer ID, einem Namen und einem Alter. Die Benutzerklasse wird dann wie folgt aussehen:
@Entity
@Table(name = "User")
public class User{
private long id;
private String userName;
private int age;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(unique = true, nullable = false)
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
@Column(name = "userName", nullable = false)
public String getUserName() {
return this.userName;
}
@Column(name = "age")
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return this.age;
}
Hinweis: wenn die Spalten in der Datenbanktabelle genau die gleichen Namen wie die Felder, die @Column (name = „..“) Anmerkung ist nicht erforderlich, .
Dann wäre die Alte Abrufen:
int userAge = session.createCriteria(User.class)
.add(Restrictions.ge("age", a))
.add(Restrictions.le("age", b))
.setProjection(Property.forName("age"))
.uniqueResult();
ein Kriterium von Benutzerklasse Erstellen sagt Hibernate ein aus User Tabelle zu machen. Dann bedeuten die Beschränkungen wobei Alter> = ein und Alter < = b sind. Die uniqueResult() sagt Hibernate, dass wir ein einzelnes Ergebnis erwarten, während die Projektion benötigt wird, um eine bestimmte Spalte abzurufen (die Projektion bedeutet wählen Alter von Benutzer). Wenn keine Projektion angegeben ist, würden die Kriterien standardmäßig die gesamte Klasse zurückgeben, d. H. Eine Auswahl * von Benutzer.
Ich weiß, dass dies etwas zu kompliziert erscheint für das, was Sie brauchen, aber die Arbeit mit Entitäten, die Ihren Tabellen und den Kriterien entsprechen, ist der richtige Weg.
ure fehlt ":" s vor a und b, und "u.age" statt alt. ist das ein Tippfehler? Wenn ja, versuche 'u.age aus dem Benutzer auszuwählen, wo du zwischen: a und: b' gehst. – kommradHomer