Hi!
Folgende SQL-Abfrage funktioniert bei mir:
Jedoch wirft folgende HQL-Abfrage einen Fehler ("unexpected token: ct")
Zu bemerken ist, dass die DB-Tabelle config_task keine eigene Java-Klasse ist, sondern lediglich in der Klasse 'Config' mittels der Hibernate-Annotation "@JoinTable"
als Jointabelle (Beziehungstabelle) zwischen den Klassen (sowie Tabellen) Config und Task erstellt wurde.
In der Datenbank taucht die Beziehungstabelle auch korrekt auf und speichert auch die korrekten Werte.
Der Code in der Config-Klasse zur Erzeugung der Beziehungstabelle sieht so aus:
Die Klasse Config hat dann noch einen Getter und Setter für das Set<Task>.
Evtl. kann mir hier Jemand helfen, wie ich meine HQL-Abfrage zum Funktionieren bekomme.
Gruß
Zrebna
Folgende SQL-Abfrage funktioniert bei mir:
SQL:
select count(*) from task t join config_task ct
on t.id = ct.task_id
where ct.config_id = 100;
Jedoch wirft folgende HQL-Abfrage einen Fehler ("unexpected token: ct")
Java:
public Integer getCountTasksById(Long configId) {
String hql = "SELECT COUNT(*) FROM " + Task.class.getSimpleName() + " t"
+ " JOIN config_task ct ON"
+ " t.id = ct.task_id"
+ "WHERE ct.config_id = :id";
return ((Number) this.getSession().createQuery(hql).setParameter("id", configId).getResultList()).intValue();
Zu bemerken ist, dass die DB-Tabelle config_task keine eigene Java-Klasse ist, sondern lediglich in der Klasse 'Config' mittels der Hibernate-Annotation "@JoinTable"
als Jointabelle (Beziehungstabelle) zwischen den Klassen (sowie Tabellen) Config und Task erstellt wurde.
In der Datenbank taucht die Beziehungstabelle auch korrekt auf und speichert auch die korrekten Werte.
Der Code in der Config-Klasse zur Erzeugung der Beziehungstabelle sieht so aus:
Java:
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "config_task", joinColumns = @JoinColumn(name = "config_id", referencedColumnName = "ID"), inverseJoinColumns = @JoinColumn(name = "task_id", referencedColumnName = "ID"))
private Set<Task> tasks;
Die Klasse Config hat dann noch einen Getter und Setter für das Set<Task>.
Evtl. kann mir hier Jemand helfen, wie ich meine HQL-Abfrage zum Funktionieren bekomme.
Gruß
Zrebna