我有两个具有多对多关联的实体类。
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;
是否可以从MOD_PM表中为SCOPE_TYPE_ID=1选择在MOD_PM_SCOPE_TYPES表中有记录的实体?
原生SQL查询:
SELECT ID, NAME FROM MOD_PM WHERE ID IN (SELECT PM_ID FROM MOD_PM_SCOPE_TYPES WHERE SCOPE_TYPE_ID=1)
如何将此查询转换为JPQL?
发布于 2013-03-01 18:09:39
当您在查询中引用SCOPE_TYPE_ID时,您指的是什么?可能是ScopeType的ID,也可能是我看不到的其他字段。我假设作用域类型id字段丢失了。
试试这个:
select p from ModPm p join p.modScopeTypes type where type.scopeTypeId = 1
https://stackoverflow.com/questions/15153877
复制相似问题