0
SpringでJPAを使用して、 "Role"から "Feature"のリストを取得しています。Springで空のコレクションが返されるJPA
特集:私は自分のアプリケーションからこのリストを取得したいとき、私はSQLクライアントから生成されたSQL要求を実行したとき、私は何かを取得するのに対し、しかし、それは
ここが私のデータモデルである私に空のリストを返します。 - ID(PK) - 名前 - 説明
がAD_ROLE: - ID(PK) - FEATURE_ID(FEATURE.idにFK)-
FEATURE_AD_ROLEに名前を付けます- ad_role_id(AD_ROLE.idにFK)
私のエンティティは次のとおりです。
@Entity
@Table(name = "FEATURE")
public class Feature implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private int id;
private String name;
private String description;
@ManyToMany
@JoinTable(name = "FEATURE_AD_ROLE", joinColumns = @JoinColumn(name = "FEATURE_ID", referencedColumnName = "ID"), inverseJoinColumns = @JoinColumn(name = "AD_ROLE_ID", referencedColumnName = "ID"))
private Collection<ADRole> adRoles;
// getter/setters
}
@Entity
@Table(name = "AD_ROLE")
public class ADRole implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private int id;
private String name;
@ManyToMany(mappedBy = "adRoles")
private List<Feature> features;
// getters/setters
}
マイDAO:
select feature0_.id as id1_1_, feature0_.description as description2_1_, feature0_.name as name3_1_ from FEATURE feature0_ inner join FEATURE_AD_ROLE adroles1_ on feature0_.id=adroles1_.FEATURE_ID inner join AD_ROLE adrole2_ on adroles1_.AD_ROLE_ID=adrole2_.id where adrole2_.name=?
Iを:これは、このSQL要求を生成
@Repository
public interface FeatureDao extends JpaRepository<Feature, Long> {
@Query("SELECT f FROM Feature f JOIN f.adRoles fa WHERE fa.name = :adProfile")
public Collection<Feature> getFeaturesByADProfile(@Param("adProfile") String adProfile);
}
SQLクライアントからこのリクエストを実行すると、結果が表示されます。
私のDBMSはOracleです。
お願いします。