String Boot查询为现有数据带来空实体

时间:2018-04-07 17:44:56

标签: spring hibernate spring-boot

我有这个Spring Boot应用程序,我有一个配置文件实体,我有我的存储库。

问题在于,当我通过电子邮件对某些配置文件进行第二次查询时,该对象返回为非null,但其中没有数据,因此我无法比较此对象的数据。

我的存储库:

public interface ProfileRepository extends JpaRepository<Profile, Long> {

    Profile findById(Long id);

    @Query("select e from Profile e where e.email = ?1")
    Profile findByEmail(String email);
}

执行这些查询的代码:

Profile myProfile = this.profileRepository.findById(data.getIdMyProfile());
Profile hisProfile = this.profileRepository.findByEmail(data.getEmail()); // see this one on the image - here is the problem        
Card myCard = this.cardRepository.findById(data.getIdMyCard());

enter image description here

我意识到如果我连续对Profile实体进行2次查询就会发生这种情况,我将查询反转以查看差异,第二个对象不是null,而是根本没有数据。 enter image description here

为什么会出现此问题?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,其中一个实体的 .LAZY 位于其中一个指向Profile实体(作为孩子)的属性上,我更改为 .EAGER 问题解决了:

// The owner of this card
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.DETACH)
@JoinColumn(name = "id_profile")
private Profile profile;