gpt4 book ai didi

java - 我可以将 @EntityGraph 应用于 @Query 吗?

转载 作者:太空宇宙 更新时间:2023-11-04 12:01:32 26 4
gpt4 key购买 nike

在存储库中(注意: SELECT_LIST 只是 from Organization org where in ( ... ) and in (...) ), IdentifiableWithName就是PersistablegetName()方法,使其成为一个投影。

@EntityGraph( Organization.NamedQuery.GRAPH_ID_NAME )
@Query( "select org " + SELECT_LIST + " order by org.name")
List<IdentifiableWithName> findOrganizationsForSelectList();

在实体上

@NamedEntityGraph( name = Organization.NamedQuery.GRAPH_ID_NAME, attributeNodes = {
@NamedAttributeNode( AbstractPersistedEntity.Index.ID ),
@NamedAttributeNode( Organization.Index.NAME ) }
)

但生成的查询似乎是实体的默认查询,而不是简化为仅名称、id 字段。这可能吗?如果是这样我做错了什么?如果 Spring Data 无法做到这一点,那么 JPA 是否可以(意味着这可能是一个可行的功能请求)?或者还有其他方法我可以做 @Query到投影,或仅包含 id 的原始实体,和name而不是任何其他字段或连接?

最佳答案

我假设您指的是一般意义上的投影,而不是 Spring Data JPA 的特定投影功能,该功能应该使您能够执行所需的操作:

https://spring.io/blog/2016/05/03/what-s-new-in-spring-data-hopper#projections-on-repository-query-methods

Closed projections allow us to optimize the query execution as only exposed properties are queried from the data store.

http://docs.spring.io/spring-data/jpa/docs/1.10.1.RELEASE/reference/html/#projections

public interface IdentifiableWithName{
Long getId();
String getName();
}

interface SomeRepository extends CrudRepository<SomeClass, Long>{
@Query( "select org " + SELECT_LIST + " order by org.name")
List<IdentifiableWithName> findOrganizationsForSelectList();
}

关于java - 我可以将 @EntityGraph 应用于 @Query 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40851968/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com