Probleme mit einem Query (left join)

Status
Nicht offen für weitere Antworten.

GilbertGrape

Bekanntes Mitglied
Hallo,

ich weiß nicht genau, ob es Hibernate-spezifisch ist, aber ich probiers mal hier.

Ich habe 3 Tabellen. 2 davon haben eine m-n Beziehung und die dritte ist die Verknüpfungstabelle.

Jetzt möchte ich einen HQL-Query erzeugen, dass mir aus Tabelle 1 alle Einträge gibt, die noch nicht in der Verknüpfungstabelle referenziert sind.

Das ist der Query, wie er mit dem SQL-Developer funktioniert:
Code:
select * from unmodified_text left join unmodifiedtext_paragraph on
unmodified_text.id = unmodifiedtext_paragraph.unmodifiedtext
where unmodifiedtext_paragraph.unmodifiedtext is null

so sieht im Moment mein HQL-Query aus:

Code:
List<UnmodifiedText> newTexts = getSession().createQuery(
				"from UnmodifiedText t left join fetch t.utp where t.utp is null").list();

ich hatte auch schon das:
Code:
List<UnmodifiedText> newTexts = getSession().createQuery(
				"from UnmodifiedText t left join fetch t.utp where t.utp.unmodifiedText is null").list();
geht beides nicht.
beim ersten kommt die Exception:
java.sql.SQLException: ORA-00936: Ausdruck fehlt

hier noch die Entities: ( ich hoffe, dass die Auszüge reichen)



Code:
@Entity
@Table(name = "UNMODIFIED_TEXT")
public class UnmodifiedText {

	Set<UnmodifiedText_Paragraph> utp = new HashSet<UnmodifiedText_Paragraph>();

	@OneToMany(mappedBy = "unmodifiedText", fetch=FetchType.EAGER, cascade=CascadeType.REMOVE)//,cascade=CascadeType.PERSIST)
	public Set<UnmodifiedText_Paragraph> getUtp() {
		return utp;
	}

	public void setUtp(Set<UnmodifiedText_Paragraph> utp) {
		this.utp = utp;
	}

Verknüpfungstabelle:
Code:
@Entity
@Table
public class UnmodifiedText_Paragraph {
	
	@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
	@JoinColumn(name = "unmodifiedText",insertable = false,	updatable = false)
	private UnmodifiedText unmodifiedText;
	@ManyToOne(cascade = {CascadeType.PERSIST,CascadeType.MERGE})
	@JoinColumn(name = "paragraph",insertable = false,	updatable = false)
	private Paragraph paragraph;
	
	public UnmodifiedText_Paragraph(){
		super();
	}
	public UnmodifiedText getUnmodifiedText() {
		return unmodifiedText;
	}

	public void setUnmodifiedText(UnmodifiedText unmodifiedText) {
		this.unmodifiedText = unmodifiedText;
	}

	
	public Paragraph getParagraph() {
		return paragraph;
	}

	public void setParagraph(Paragraph paragraph) {
		this.paragraph = paragraph;
	}
}

Ich habe den Query auch schon ohne fetch probiert.
Vielleicht sieht das ja einer von euch.

Danke schonmal,
GG
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben