我正在尝试使用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);
}