tôi đã nhận 2 lớp Entity với Nhiều-to-Nhiều hiệp hộiJPA chọn từ bộ sưu tập với nhiều-nhiều hiệp hội
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;
Có có thể chọn các thực thể từ bảng MOD_PM có bản ghi trong bảng MOD_PM_SCOPE_TYPES cho SCOPE_TYPE_ID = 1
Truy vấn SQL Gốc:
SELECT ID, NAME FROM MOD_PM WHERE ID IN (SELECT PM_ID FROM MOD_PM_SCOPE_TYPES WHERE SCOPE_TYPE_ID=1)
Làm cách nào để dịch truy vấn này sang JP QL?
Lớp ModScopeType có một bảng chú thích gọi MOD_SCOPES không bạn có nghĩa là một int kỷ lục ông MOD_SCOPES bảng? –