2
아래에서 언급 한 SQL의 HQL을 만들었지 만 Criteria 및 Sub 쿼리로 실행할 수 없습니다. 기준을 통해 다음 쿼리 (SQL & HQL)를 실행하는 데 도움을주십시오. 사전 감사드립니다 ...Criteria Query Many To Many
SQL :
SELECT * FROM app_interface ain WHERE ain.id IN (SELECT ai.id FROM app_interface ai INNER JOIN app_module_interface ami ON ami.interface_id = ai.id INNER JOIN app_module am ON am.id = ami.module_id WHERE am.id = :id
HQL : 기준을 통해
FROM AppModule oam WHERE oam.id IN(SELECT am.id FROM AppModule am INNER JOIN am.appRoles ar WHERE ar.id = :id)
이 필요 ..... ?????
는 시나리오 :
public class AppModule implements java.io.Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", unique = true, nullable = false)
private Integer id;
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "appModules")
private Set<AppRole> appRoles = new HashSet<AppRole>(0);
}
는 는 AppRole가 java.io.Serializable을 구현공용 클래스는 {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", unique = true, nullable = false)
private Integer id;
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@OrderBy("name")
@JoinTable(name = "app_role_module", joinColumns = {
@JoinColumn(name = "role_id", nullable = false, updatable = false)}, inverseJoinColumns = {
@JoinColumn(name = "module_id", nullable = false, updatable = false)})
private Set<AppModule> appModules = new HashSet<AppModule>(0);
은}
나는 최대 절전 모드에 익숙하지 만 너무 새로운 것은 아니다. 그러나 어떤 방법이 ... 감사합니다 –
이 답변은 IN 연산자에 관한 것입니다. 하지만 나는 또한 'FROM AppModule oam 어디 oam.id 안 (SELECT am.id FROM AppModule INNER JOIN am.appRoles ar 어디 ar.id = : id)' –
내 편집 된 답변을 참조하십시오. 여기 –