0

JPQL クエリ宣言のフィールドで並べ替えようとしていますが、非常に単純なはずですが、コンパイラ エラーが発生し続けます。

UserTime 行の一部である UserClockDate 列で並べ替えようとしています。しかし、コンパイルしようとするたびにエラーが発生します。

SEVERE: 名前付きクエリのエラー: fetchIfUserIsClockedInWithUser org.hibernate.QueryException: プロパティを解決できませんでした: UserClockDate of: models.UserTime [SELECT ut FROM models.UserTime ut WHERE USER_ID = :user ORDER BY ut.UserClockDate DESC]

ORDER BY を取り出すと、正常にコンパイルされます。

クラス自体の関連部分は次のとおりです。

@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;

あなたが私に与えることができるどんな助けでも大歓迎です!

4

2 に答える 2

5

存在しないフィールドで注文しようとしている場所を意味しますか? UserClockDateはuserClockDateである必要があります

于 2012-08-10T06:57:34.787 に答える
2

JPQL は、エンティティ、それらのマップされた列、および関連付けに対して機能します。テーブルと列では機能しません。

エンティティUSER_IDにフィールドはありません。エンティティにUserTimeはありません。UserClockDateUserTime

クエリは

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

補足: UserTime のすべてのフィールドは UserTime の一部です。userどこでもプレフィックスを繰り返す必要はありません。代わりに、フィールドclockInに ,clockOutという名前を付けてみませんか?clockDate

于 2012-08-10T07:02:45.460 に答える