Java 如何避免任何FK实体加载,但仍在HQL中使用FK实体?

Java 如何避免任何FK实体加载,但仍在HQL中使用FK实体?,java,hibernate,lazy-loading,Java,Hibernate,Lazy Loading,我有一个父实体DBParentEntity,它与FK实体DBForeignEntity有关 @Entity @Table(catalog = "my_schema", name = "my_table") public class DBParentEntity { ... private DBForeignEntity foreign; @ManyToOne @JoinColumn(name = "foreign_id", referencedColumnName

我有一个父实体DBParentEntity,它与FK实体DBForeignEntity有关

@Entity
@Table(catalog = "my_schema", name = "my_table")
public class DBParentEntity {

   ...

   private DBForeignEntity foreign;

   @ManyToOne
   @JoinColumn(name = "foreign_id", referencedColumnName = "id")
   public DBForeignEntity getForeign() {
       return foreign;
   }

   public void setForeign(DBForeignEntity foreign) {
       this.foreign = foreign;
   }
}
如何避免加载FK实体,但仍在HQL中使用它? 我想用自己的缓存方法加载外部实体

private int foregnId;

@Basic
@Column(name = "foreign_id")
public int getForegnId() {
    return foregnId;
}

public void setForegnId(int foregnId) {
    this.foregnId = foregnId;
}

private DBForeignEntity foreign;
private boolean hasForeign;
@Transient
public DBForeignEntity getForeign() {
    if (!hasForeign) {
        initForeign();
    }
    return foreign;
}

@Transient
private synchronized void initForeign() {
    if (hasForeign) return;
    foreign = getFromCache(foregnId)
    if (foreign!= null) hasForeign= true;
}
我可以删除@ManyToOne注释并用@Transient替换它, 但HQL的所有关系都将失败:

Query query = session.createQuery("from DBParentEntity parent where parent.!foreign!.more_foregn.some_field = :some_value ")