今天,我在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吗?还是我错过了什么?有没有办法防止这种警告?我的意思是我可以将其隐藏(因为我们在任何地方都不使用“ ==”),但是我宁愿知道此问题的根本原因。谢谢!