NamedEntityGraph返回所有列和对象

时间:2015-06-18 22:55:00

标签: spring hibernate spring-data spring-data-jpa

我正在尝试使用NamedEntityGraph来限制特定查询的返回数据。主要是我不希望在列出对象时返回完整的对象详细信息。下面是一个非常简单的类示例。

@Entity
@Table(name="playerreport",schema="dbo")

@NamedEntityGraphs({
@NamedEntityGraph(name = "report.simple",
        attributeNodes = 
        {@NamedAttributeNode(value="intId")
        }
        )
})
public class PlayerReportEntity {

    @Id
    @Column(name="intid",columnDefinition="uniqueidentifier")
    private String intId;

    @Column(name="plyid",columnDefinition="uniqueidentifier")
    @Basic(fetch=FetchType.LAZY)
    private String plyId;

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name = "plyid", insertable=false,updatable=false)
    private PlayerEntity player;

无论我做什么,plyId和球员总是被退回。有没有办法只返回请求的列(intId)?

至于集合,Hibernate不会为播放器对象进行连接,但它仍然将播放器返回为null。所以那部分工作到了一定程度。

我在下面使用JPARepository为我生成Crud语句

public interface PlayerReportRepository extends JpaRepository<PlayerReportEntity, String> {

@EntityGraph(value="report.simple")
List<PlayerIntelEntity> findByPlyId(@Param(value = "playerId") String playerId);

@Override
@EntityGraph(value="report.simple")
public PlayerIntelEntity findOne(String id);

}

1 个答案:

答案 0 :(得分:0)

来自此处的一大块文本 - “因此,似乎@NamedEntityGraph仅影响作为集合的字段,但总是加载不是集合的字段。” from JIRA

请使用this页面上的示例47并相应地使用存储库。 从本质上讲,hibernate现在正在加载类中的所有场,对于集合,如果你按照上面的例子,它将会起作用。

感谢。