M
Mariee
Gast
Hallo,
ich habe eine Frage zur Sortierung von Hibernate-Abfrage.
Ich habe 2 Tabellen.
Die erste sind die Autoren
In der zweiten sind Bücher in der ein Autor als ManyToOne-Beziehung gespeichert ist - muss aber kein vorkommen
Die Tabellen haben noch mehr Inhalte, z.B. haben die Bücher noch einen Verlag.
Ich mache nun eine Abfrage in der ich alle Bücher eines bestimmten Verlags suche
Das Ergebnis würde ich gerne sortieren: Als erst nach dem Namen der Autoren, dann nach dem Namen des Buches.
Ich habe es so versucht:
Da bekomme ich aber die Fehlermeldung:
could not resolve property: autor.name of: Buch
Wenn ich anstelle von crit.addOrder( Order.asc("autor.name") ); nach crit.addOrder( Order.asc("autor") ); sortiere geht alles wunderbar - alelrdings sortiert er hier nach der ID von den Autoren. Das ist nicht gewünscht.
Ich denke es wird eine leichte Lösung geben auf die ich gerade nicht komme. Vielleicht kann wer von euch mit geschulten Auge schnell das Problem sehen
Danke für die Hilfe
ich habe eine Frage zur Sortierung von Hibernate-Abfrage.
Ich habe 2 Tabellen.
Die erste sind die Autoren
Java:
@Entity
class Autor
{
int id;
String name;
@Id
@GeneratedValue(generator="increment")
@GenericGenerator(name="increment", strategy = "increment")
@Column(name="id", nullable=false)
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
@Column(name="name", nullable=false)
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
}
In der zweiten sind Bücher in der ein Autor als ManyToOne-Beziehung gespeichert ist - muss aber kein vorkommen
Java:
@Entity
class Buch
{
int id;
String name;
Autor autor;
@Id
@GeneratedValue(generator="increment")
@GenericGenerator(name="increment", strategy = "increment")
@Column(name="id", nullable=false)
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
@Column(name="name", nullable=false)
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
@ManyToOne(optional = true)
@JoinColumn(name = "autor")
public User getAutor()
{
return autor;
}
public void setAutor(User autor)
{
this.autor = autor;
}
}
Die Tabellen haben noch mehr Inhalte, z.B. haben die Bücher noch einen Verlag.
Ich mache nun eine Abfrage in der ich alle Bücher eines bestimmten Verlags suche
Das Ergebnis würde ich gerne sortieren: Als erst nach dem Namen der Autoren, dann nach dem Namen des Buches.
Ich habe es so versucht:
Java:
Criteria crit = session.createCriteria(Buch.class);
crit.add(Restrictions.eq("verlag", "nach was gesucht werden soll"));
crit.addOrder( Order.asc("autor.name") );
crit.addOrder( Order.asc("name") );
Da bekomme ich aber die Fehlermeldung:
could not resolve property: autor.name of: Buch
Wenn ich anstelle von crit.addOrder( Order.asc("autor.name") ); nach crit.addOrder( Order.asc("autor") ); sortiere geht alles wunderbar - alelrdings sortiert er hier nach der ID von den Autoren. Das ist nicht gewünscht.
Ich denke es wird eine leichte Lösung geben auf die ich gerade nicht komme. Vielleicht kann wer von euch mit geschulten Auge schnell das Problem sehen
Danke für die Hilfe