为什么会收到休眠代理变窄警告?

时间:2018-07-31 22:48:02

标签: java spring hibernate spring-data-jpa

今天,我在spring-boot服务器应用程序中注意到了一些休眠警告,我不确定为什么会发生。警告是:

  

休眠HHH000179警告:将代理缩小到com.xyz类。   休息==

我有点知道为什么通常会发出此警告,但是我看不到为什么此代码会导致此警告。我将休眠版本从5.2.10.Final升级到5.3.3.Final。对于较新的版本,可能没有任何关系,因为我们的代码进行了相当多的更改,并且我之前从未见过此警告,但出于完整性的考虑,我只想提及它。无论如何,这里基本上就是我们代码的结构:

@Entity
@MappedSuperclass
public abstract class BaseEntity {
    @Id
    private Long id;
}

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Animal extends BaseEntity {}

@Entity
public class Cat extends Animal {}

@Entity
public class CatAssignment extends BaseEntity {
    @ManyToOne
    private Person owner;

    @ManyToOne
    private Person vet;

    @ManyToOne(fetch = EAGER)
    private Cat cat;
}

public intercace CatAssignmentRepository extends CrudRepository<CatAssignment, Long> {
    CatAssignment findByOwnerAndVet(Person owner, Person vet);
}

如果我执行以下代码,则会引发警告:

catAssignmentRepository.findByOwnerAndVet(owner, vet);

为什么这里需要缩小代理范围?我正在“请求” Cat,而不是Animal。休眠状态不能告诉返回的实体永远是Cat吗?还是我错过了什么?有没有办法防止这种警告?我的意思是我可以将其隐藏(因为我们在任何地方都不使用“ ==”),但是我宁愿知道此问题的根本原因。谢谢!

0 个答案:

没有答案