JPA/JPQL-Query in ManyToMany-Beziehung

mental.dIseASe

Lieutenant
Registriert
Dez. 2008
Beiträge
676
Heyho,

ich habe eigentlich nicht wo wirklich Plan von Datenbanken, soll aber in der Persistenz- und der Serviceschicht einer Anwendung rumfuhrwerken. Das hier sind die beteiligten Entitäten (gekürzt):

Code:
@Entity
public class Feedback {

	@Id
	@GeneratedValue
	@Column(updatable=false)
	private Long id;
	
	@ManyToMany
	private List<User> contributors;
		
}

Code:
@Entity
public class User {
	
	@Id
	@GeneratedValue
	@Column(updatable=false)
	private Long id;
	
	@ManyToMany(mappedBy="contributors")
	private List<Feedback> feedbackContributions;
	
}

Es handelt sich dabei um so etwas Ähnliches wie ein Forum. Ich möchte nun all die Feedbacks haben, in denen ein bestimmter Nutzer gepostet hat. Hat sich also in einem Feedback bereits dieser User zu Wort gemeldet, ist also in der contributors-Liste dieser Feedback-Entität enthalten, möchte ich diese Feedback-Entität in meiner Ergebnisliste haben. Da ich zu müde und zu unfähig bin und die Zeit insgesamt auch etwas drängt, wäre ich für einen Schubser in die richtige Richtung dankbar! :)
 
Dann hier der Schubser:

Eigentlich würde man in SQL das Problem mit einem einfachen JOIN .. ON .. lösen. Aber JPQL kennt kein ON .., also kann diesen Weg gehen:

Code:
SELECT x
FROM X x, Y y
WHERE x.field1 = y.field3

Für deinen konkreten Fall wäre es vermutlich hilfreich eine dritte Entität zu erstellen, die die Many-To-Many-Mapping-Tabelle beinhaltet, so dass man quasi darauf joinen kann.
 
Abhängig von dem Framework welches du verwendest kannst IN verwenden.
Ich weis das es mit der aktuellen eclipselink version funktioniert. Die Wahrscheinlichkeit dass es Hibernate kann ist vermutlich auch recht hoch zu den anderen kann ich so nichts sagen.

Vielleicht als Randnotiz ich würde hier keine bidirektionale Verbindung machen.
 
Zurück
Oben