Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.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 JPA在添加ORDERBY子句时忽略左外部联接注释_Java_Hibernate_Jpa_Eclipselink_Outer Join - Fatal编程技术网

Java JPA在添加ORDERBY子句时忽略左外部联接注释

Java JPA在添加ORDERBY子句时忽略左外部联接注释,java,hibernate,jpa,eclipselink,outer-join,Java,Hibernate,Jpa,Eclipselink,Outer Join,我有一个实体,它看起来是这样的: @Entity @Table(name = "LOG_ENTRY") public class LogEntry implements Serializable { ... @JoinFetch(JoinFetchType.OUTER) @ManyToOne @JoinColumn(name = "SERVER_ID") private Server server; ... } @Entity @Table(name = "

我有一个实体,它看起来是这样的:

@Entity
@Table(name = "LOG_ENTRY")
public class LogEntry implements Serializable {

...
    @JoinFetch(JoinFetchType.OUTER)
    @ManyToOne
    @JoinColumn(name = "SERVER_ID")
    private Server server;
...
}


@Entity
@Table(name = "SERVER")
public class Server extends implements Serializable {
...
    @Column(name = "NAME")
    private String name;
...
}
当我以以下方式构造查询时:

CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<LogEntry> criteria = builder.createQuery(LogEntry.class);
Root<LogEntry> root = criteria.from(LogEntry.class);
但当我以以下方式将orderBy添加到条件中时:

CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<LogEntry> criteria = builder.createQuery(LogEntry.class);
Root<LogEntry> root = criteria.from(LogEntry.class);
criteria.orderBy(builder.desc(root.get("server.name")));
我使用的是eclipselink 2.3.3(您可能会注意到,因为我在实体中使用了org.eclipse.persistence.annotations.JoinFetch)

有什么办法解决这个问题吗? 切换到Hibernate会使它正常工作吗

尝试
@ManyToOne(可选=true)
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<LogEntry> criteria = builder.createQuery(LogEntry.class);
Root<LogEntry> root = criteria.from(LogEntry.class);
criteria.orderBy(builder.desc(root.get("server.name")));
SELECT t0.NAME FROM SERVER t0, LOG_ENTRY t1 WHERE (t0.ID = t1.SERVER_ID) ORDER BY t0.NAME DESC