JPA sélectionnez de la collection avec plusieurs-à-plusieurs association
J'ai 2 classes d'Entité avec plusieurs-à-Plusieurs association.
ModPm:
@Entity
@Table(name = "MOD_PM")
public class ModPm extends WebPageObject implements Serializable, IDBNamedEntity {
private static final long serialVersionUID = 1L;
public final static String Q_GET_WITHOUT_STATUS_FOR_SCOPE = "ModPm.getWithoutStatusForScope";
@Id
private long id;
....
@ManyToMany
@JoinTable(name = "MOD_PM_SCOPE_TYPES",
joinColumns = @JoinColumn(name = "PM_ID"),
inverseJoinColumns = @JoinColumn(name = "SCOPE_TYPE_ID")
)
private List<ModScopeType> modScopeTypes;
ModScopeType:
@Entity
@Table(name = "MOD_SCOPES")
@Cacheable
public class ModScopeType extends WebPageObject implements Serializable {
private static final long serialVersionUID = 1L;
public final static String Q_GET_ALL = "ModScopeType.getAll";
@Id
@Column(name = "ID")
private long id;
....
//bi-directional many-to-many association to ModPm
@ManyToMany
@JoinTable(name = "MOD_PM_SCOPE_TYPES",
joinColumns = @JoinColumn(name = "SCOPE_TYPE_ID"),
inverseJoinColumns = @JoinColumn(name = "PM_ID")
)
private List<ModPm> modPms;
Est-il possible de sélectionner des entités de MOD_PM tableau de l'enregistrement dans MOD_PM_SCOPE_TYPES table pour SCOPE_TYPE_ID=1?
Natif de la Requête SQL:
SELECT ID, NAME FROM MOD_PM WHERE ID IN (SELECT PM_ID FROM MOD_PM_SCOPE_TYPES WHERE SCOPE_TYPE_ID=1)
Comment puis-je traduire cette requête JPQL?
- Le ModScopeType classe dispose d'une Table d'annotation appelé MOD_SCOPES ne pas vous dire un enregistrement, il int MOD_SCOPES table?
Vous devez vous connecter pour publier un commentaire.
Lorsque vous vous référez à SCOPE_TYPE_ID dans la requête de quoi parlez-vous? Pourrait être l'ID de ScopeType ou un autre domaine que je ne suis pas voyant. Je suis en supposant que le champ id de type de champ est manquant.
Essayez ceci: