Java c解决方案现在,虽然它仍然会进行一些多余的连接(我只需要关联的id)和复制字段选择,但是如果我们将更多的内容扩展到不同的视图中,它就像一个很好的库,尽管现在通过JPA的PersistenceContext自动合并数据就足够了。 @EntityGraph(v
Java c解决方案现在,虽然它仍然会进行一些多余的连接(我只需要关联的id)和复制字段选择,但是如果我们将更多的内容扩展到不同的视图中,它就像一个很好的库,尽管现在通过JPA的PersistenceContext自动合并数据就足够了。 @EntityGraph(v,java,spring,hibernate,jpa,jpql,Java,Spring,Hibernate,Jpa,Jpql,c解决方案现在,虽然它仍然会进行一些多余的连接(我只需要关联的id)和复制字段选择,但是如果我们将更多的内容扩展到不同的视图中,它就像一个很好的库,尽管现在通过JPA的PersistenceContext自动合并数据就足够了。 @EntityGraph(value = "Subject.allJoins", type = EntityGraphType.FETCH) @Query("select s from Subject s" + FIND_QUERY_WHERE) Page
c解决方案现在,虽然它仍然会进行一些多余的连接(我只需要关联的id)和复制字段选择,但是如果我们将更多的内容扩展到不同的视图中,它就像一个很好的库,尽管现在通过JPA的PersistenceContext自动合并数据就足够了。
@EntityGraph(value = "Subject.allJoins", type = EntityGraphType.FETCH)
@Query("select s from Subject s" + FIND_QUERY_WHERE)
Page<Subject> findInProject(@Param("projectId") UUID projectId, <additional params>
select
subject0_.id,
<all kinds of fields including some duplicates>
from
subject subject0_
left outer join project project1_ on subject0_.project_id = project1_.id
left outer join subject_property_value properties2_ on subject0_.id = properties2_.subject_id
left outer join property_value propertyva3_ on properties2_.property_value_id = propertyva3_.id
left outer join ingestion_id_mapping ingestedme4_ on subject0_.id = ingestedme4_.subject_id
where
subject0_.project_id = '123'
order by
subject0_.name asc
@EntityView(Subject.class)
public interface SubjectView {
@IdMapping
Integer getId();
ProjectView getProject();
@Mapping(fetch = SUBSELECT)
Set<PropertyValueView> getProperties();
Set<IngestionMappingView> getMappings();
}
@EntityView(Project.class)
public interface ProjectView {
@IdMapping
Integer getId();
String getName();
}
@EntityView(PropertyValue.class)
public interface PropertyValueView {
@IdMapping
Integer getId();
String getName();
}
@EntityView(IngestionMapping.class)
public interface IngestionMappingView {
@IdMapping
Integer getId();
String getName();
}
@Repository
public interface SubjectRepository {
Page<SubjectView> findByProjectId(@Param("projectId") UUID projectId, <additional params>);
}