私はアプリケーションでHibernateを使い始めました。また、カスタムクエリを使用するためにJPAリポジトリを使用しています。私はそれらの間に関係を持つ複数のエンティティを持っています。私は、結合カラムとキャッシュを使用して 'EAGER'としてフェッチモードを使用しました。私は、Hibernateが複数のselectクエリを作成して各エンティティをフェッチし、単一のクエリでそれを実行していないことを観察しました。Hibernate:Hibernateによってフェッチモードで複数選択されたクエリEager
以下エンティティです:
@Entity
@Table(name = "entity_a")
public class EntityA implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
...
@OneToMany(fetch = FetchType.EAGER, mappedBy = "entity_a")
@JsonIgnore
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Set<EntityB> entityB = new HashSet<>();
私はJPAのカスタムクエリを使用して、以下のように私のエンティティを取得しています:
EntityA entityA = entityARepository.findOneById(id);
Hibernateは上記の文の選択クエリを発行します。
私はentityA.getEntityB()
を実行するたびに、EntityBに対して別のselect文を発行します。これを避ける方法。 Hibernateを使用して、両方のエンティティを1回の選択で取得するにはどうすればよいですか?
ありがとうございます! Fetchアノテーションを使用すると、私のために働いた。 –