Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 无法按JPQL中的列排序_Java_Jpa_Jpql - Fatal编程技术网

Java 无法按JPQL中的列排序

Java 无法按JPQL中的列排序,java,jpa,jpql,Java,Jpa,Jpql,我试图在JPQL查询声明中按字段排序,看起来应该很简单,但我一直得到一个编译器错误 我试图按UserClockDate列排序,这是UserTime行的一部分。但每次我尝试编译时都会出现错误: 严重:命名查询中出错:FetchIfUserIsLockedWithUser org.hibernate.QueryException:无法解析属性: UserClockDate of:models.UserTime[从models.UserTime ut中选择ut 其中USER_ID=:用户订单按ut.U

我试图在JPQL查询声明中按字段排序,看起来应该很简单,但我一直得到一个编译器错误

我试图按UserClockDate列排序,这是UserTime行的一部分。但每次我尝试编译时都会出现错误:

严重:命名查询中出错:FetchIfUserIsLockedWithUser org.hibernate.QueryException:无法解析属性: UserClockDate of:models.UserTime[从models.UserTime ut中选择ut 其中USER_ID=:用户订单按ut.UserClockDate DESC]

如果我把订单拿出来,它就可以编译了

以下是课程本身的相关部分:

@NamedQueries({
        @NamedQuery(name = "fetchAllUserTimes", query = "SELECT ut FROM UserTime ut"),
        @NamedQuery(name = "fetchIfUserIsClockedInWithUser", query = "SELECT ut FROM UserTime ut WHERE USER_ID = :user ORDER BY ut.UserClockDate DESC") 
    })
@Entity
@Table(name = "userTime")
@Component
public class UserTime implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue
    @Column(name = "UserTimeId")
    private int userTimeId;

    @ManyToOne
    @JoinColumn(name = "USER_ID")
    private User user;

    @Column(name = "UserClockIn")
    @Type(type="org.joda.time.contrib.hibernate.PersistentDateTime")
    private DateTime userClockIn;

    @Column(name = "UserClockOut")
    @Type(type="org.joda.time.contrib.hibernate.PersistentDateTime")
    public DateTime userClockOut;

    @Column(name = "UserClockDate")
    @Type(type="org.joda.time.contrib.hibernate.PersistentDateTime")
    public DateTime userClockDate;

如果您能给我任何帮助,我将不胜感激

您的意思是尝试按不存在的字段排序?UserClockDate应该是UserClockDate

JPQL用于实体、其映射列和关联。它对表和列不起作用

UserTime实体中没有用户ID字段。UserTime实体中没有UserClockDate

查询应该是

select ut from models.UserTime ut where ut.user = :user order by ut.userClockDate desc

旁注:os UserTime的所有字段都是UserTime的一部分。无需到处重复用户前缀。为什么不将字段命名为clockIn、clockOut、clockDate?

为了澄清,您应该使用实体中字段的名称,而不是表中列的名称。您是对的!我应该抓到的,谢谢!我错误地尝试使用列名而不是字段名。