Java Spring JPA存储库忽略FetchType.LAZY

Java Spring JPA存储库忽略FetchType.LAZY,java,spring,hibernate,spring-mvc,jpa,Java,Spring,Hibernate,Spring Mvc,Jpa,我定义了带有OneToMany映射的实体类,并通过扩展Spring的JpaRepository接口创建了Spring JPA存储库接口 我已经在OneToMany注释中的关联上显式地将fetch设置为FetchType.LAZY 我面临的问题是,当我使用存储库获取特定记录时,Spring正在获取关联的实体对象,这些对象是使用OneToMany注释定义的,以及它们后续的关联实体对象,等等,忽略它们的获取类型。当在Spring REST控制器中使用它时,我接收到大量的web页数据。有时,当遇到循环绑

我定义了带有
OneToMany
映射的实体类,并通过扩展Spring的
JpaRepository
接口创建了Spring JPA存储库接口

我已经在
OneToMany
注释中的关联上显式地将fetch设置为
FetchType.LAZY

我面临的问题是,当我使用存储库获取特定记录时,Spring正在获取关联的实体对象,这些对象是使用
OneToMany
注释定义的,以及它们后续的关联实体对象,等等,忽略它们的获取类型。当在Spring REST控制器中使用它时,我接收到大量的web页数据。有时,当遇到循环绑定时,还会导致StackOverflow异常

我在stackoverflow.com上看到以下帖子,但答案似乎与当前情况无关

更新


Spring数据并没有忽略它是惰性的这一事实,bt Spring数据REST导出整个实体以及惰性集合,这将导致获取集合。在它们上面加上lazy不会影响这一点。您需要使用@JsonIgnore注释,以避免数据作为JSON提取。@M.Deinum谢谢。我怀疑这可能是问题所在。@WeareBorg我们正在设置再次将json对象从网页发送回服务器以更新数据。当我们使用JsonIgnore时,发送回来的数据将不包含与被忽略字段相关的数据,并且当我们使用springjpa将对象持久化到数据库时,该数据将被取消。希望清楚。Spring和Spring数据都提供了跨不同用例裁剪领域模型JSON表示的机制。请看下面的答案:
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class AbstractEntity implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = -2700585394392789902L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    @CreatedDate
    private Date createdDate = new Date();

    @LastModifiedDate
    private Date lastModifiedDate = new Date();

    @CreatedBy
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn
    private User createdBy;

    @LastModifiedBy
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn
    private User lastModifiedBy;

    @javax.persistence.Version
    private long version;

    public Date getCreatedDate() {
        return createdDate;
    }

    public void setCreatedDate(Date createdDate) {
        this.createdDate = createdDate;
    }

    public Date getLastModifiedDate() {
        return lastModifiedDate;
    }

    public void setLastModifiedDate(Date lastModifiedDate) {
        this.lastModifiedDate = lastModifiedDate;
    }

    @JsonIgnore
    public User getCreatedBy() {
        return createdBy;
    }

    public void setCreatedBy(User createdBy) {
        this.createdBy = createdBy;
    }

    public void setLastModifiedBy(User lastModifiedBy) {
        this.lastModifiedBy = lastModifiedBy;
    }

    public long getVersion() {
        return version;
    }

    public void setVersion(long version) {
        this.version = version;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

}



@Entity
@Table(name = "currencies")
public class Currency extends AbstractMasterEntity {

    private static final long serialVersionUID = 1L;

    @Override
    public String toString() {
        return "Currency [code=" + code + ", name=" + name + "]";
    }
}