Java Hibernate@OneToOne(fetch=FetchType.LAZY)不工作

Java Hibernate@OneToOne(fetch=FetchType.LAZY)不工作,java,hibernate,jpa,spring-boot,lazy-loading,Java,Hibernate,Jpa,Spring Boot,Lazy Loading,用户类 @Entity @Getter @Setter @NoArgsConstructor @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) public class User extends BaseDomain { @Column(unique=true) private String email; private String name; private String surna

用户类

@Entity
@Getter
@Setter
@NoArgsConstructor
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class User extends BaseDomain {

    @Column(unique=true)
    private String email;
    private String name;
    private String surname;

    @JsonIgnore
    private String password;

    // fortune types
    @OneToOne(fetch = FetchType.LAZY)
    private FortuneTeller fortuneTeller;
    private int isFortuneTeller; // for efficient searching

    @Override
    public boolean equals(Object o) {
        return super.equals(o);
    }

    @Override
    public String toString() {
        return "User{} " + super.toString();
    }

}
算命先生:

@Entity
public class FortuneTeller extends FortuneCapability {

    @Override
    public String toString() {
        return super.toString();
    }

    @Override
    public boolean equals(Object o) {
        return super.equals(o);
    }

}
能力:

@Entity
@NoArgsConstructor
@Getter
@Setter
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class FortuneCapability extends BaseDomain {

    private int totalFortune;

    private int price;

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "fortuneCapability")
    private List<Review> reviews = new ArrayList<>();

    public void addReview(Review review) {
        review.setFortuneCapability(this);
        reviews.add(review);
    }

    @Override
    public String toString() {
        return super.toString();
    }

    @Override
    public boolean equals(Object o) {
        return super.equals(o);
    }
}
延迟加载对OneToOne或OneToMany都不起作用。有什么问题吗?我认为这是因为Lombok的
@Data
注释,并将它们转换为
@Getter/Setter
,但仍然是一样的


另外。

序列化时,Jackson将调用getter方法,该方法将使用其代理检索延迟加载的对象。 如果您检查生成的sql,您将看到没有根据findAll上的用户id检索fortune_功能,如果抓取是急切的,您将看到如下sql

Hibernate: select fortunet_capability ......... where fortunet_capability [some generated text].user_id=?

你是如何得到这个json的?正如我通过
userRepository
所说的,它使用
RestController
扩展了
crudepository
。执行findAll时,检查生成的sql,你看到一个连接了吗?没有。它创建了另一个选择来获取数据。获取算命师?基于你的帮助进行了一点搜索后,我发现我的问题是由Jackson library引起的。()
Hibernate: select fortunet_capability ......... where fortunet_capability [some generated text].user_id=?