Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate查询在使用ORDERBY子句时卡住_Java_Hibernate_Freeze_Clause - Fatal编程技术网

Java Hibernate查询在使用ORDERBY子句时卡住

Java Hibernate查询在使用ORDERBY子句时卡住,java,hibernate,freeze,clause,Java,Hibernate,Freeze,Clause,我有以下HQL查询: SELECT bu FROM Backup bu WHERE bu.status = :status ORDER BY bu.container.techId ASC 每当查询结果>0时,查询就会停止,这意味着query.getResultList()永远不会返回。 但是,如果我删除ORDERBY子句,只需从Backup bu中选择bu,其中bu.status=:status运行正常 我的课程是: public class Backup implements Serial

我有以下HQL查询:

SELECT bu FROM Backup bu WHERE bu.status = :status ORDER BY bu.container.techId ASC
每当查询结果>0时,查询就会停止,这意味着query.getResultList()永远不会返回。 但是,如果我删除ORDERBY子句,只需从Backup bu中选择bu,其中bu.status=:status运行正常

我的课程是:

public class Backup implements Serializable {

  @Id
    @Column(name="ID")
    @GenericGenerator(name = "generator", strategy = "guid", parameters = {})
    @GeneratedValue(generator = "generator")
    private String id;

    @Column(name="PVAID", nullable=true)
    private String PVAID;

    @Column(name="Error", nullable=true)
    private String error;

    @Column(name="\"Size\"", nullable=false)
    private Long backupSize;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name="startdate", nullable=false)
    private Date startDate;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name="enddate", nullable=true)
    private Date endDate;

    @Column(name="status", nullable=false)
    private Short status;

    @ManyToOne
    @JoinColumn(name="fullbackupid", referencedColumnName="ID", nullable=true)
    private Backup fullBackup;

    @ManyToOne
    @JoinColumn(name = "ContainerID", referencedColumnName="ID", nullable=false)
    private Container container;

}

执行查询的代码

 public List<T> getAllByFilter(final boolean isNamedQuery, final String queryString, final HashMap<String, Object> fields, final int startRecord, final int maxResults) {
    logger.log(Level.INFO, "Loading all paginated");
    final EntityManager em = emf.createEntityManager();
    Query query = null;
    if(isNamedQuery) {
        query = em.createNamedQuery(queryString);
    } else {
        query = em.createQuery(queryString);
    }
    final Set<?> set = fields.entrySet();
    final Iterator<?> i = set.iterator();

    while(i.hasNext()){
      final Map.Entry me = (Map.Entry)i.next();
      final String field = (String)me.getKey();
      final Object value = me.getValue();
      System.out.println(me.getKey() + " : " + me.getValue() );
      query.setParameter(field, value);
    }
    query.setFirstResult(startRecord);
    if (maxResults!=0) query.setMaxResults(maxResults);
    return query.getResultList();
}
参考底图数据库是SQL Server

问题出在哪里?有人面临类似的问题吗?
谢谢

能否显示检索查询值的java代码?Containers表中有多少条记录?通过在hibernate中删除order By,您就删除了容器的连接-如果Containers表有许多记录,那么执行该操作可能需要很长时间join@Alex我假设您将FetchType更改为
Lazy
,用于
manytone
持久化中的某个映射?默认情况下,对于Hibernate,它是
Eager
。但是,如果将其更改为“惰性”,则按短语顺序映射可能无效。@子规则否,FETCHTYPE中没有更改您是否在数据库中运行了hibernate手动生成的SQL?
 public List<T> getAllByFilter(final boolean isNamedQuery, final String queryString, final HashMap<String, Object> fields, final int startRecord, final int maxResults) {
    logger.log(Level.INFO, "Loading all paginated");
    final EntityManager em = emf.createEntityManager();
    Query query = null;
    if(isNamedQuery) {
        query = em.createNamedQuery(queryString);
    } else {
        query = em.createQuery(queryString);
    }
    final Set<?> set = fields.entrySet();
    final Iterator<?> i = set.iterator();

    while(i.hasNext()){
      final Map.Entry me = (Map.Entry)i.next();
      final String field = (String)me.getKey();
      final Object value = me.getValue();
      System.out.println(me.getKey() + " : " + me.getValue() );
      query.setParameter(field, value);
    }
    query.setFirstResult(startRecord);
    if (maxResults!=0) query.setMaxResults(maxResults);
    return query.getResultList();
}
13:45:03,583 INFO  [STDOUT] Hibernate: select top 41 backup0_.ID as ID153_, backup0_.IsFullBackup as IsFullBa2_153_, backup0_.PVAID as PVAID153_, backup0_.Error as Error153_, backup0_.[Size] as Size5_153_, backup0_.startdate as startdate153_, backup0_.enddate as enddate153_, backup0_.status as status153_, backup0_.ManualBackup as ManualBa9_153_, backup0_.fullbackupid as fullbac10_153_, backup0_.ContainerID as Contain11_153_ from Backups backup0_, Containers container1_ where backup0_.ContainerID=container1_.ID and backup0_.status=? order by container1_.TechID DESC