2

これは、私が注釈を付けざるを得ない JPQL です。

@Query(
 "SELECT a from Employee a WHERE eid = :eid and hireDate between :first and :last order by projectId"
)

これを機能させることができないため:

public List<Employee>
findByEidAndHireDateBetweenOrderByProjectId(
  String eid, Date first, Date last);

メソッド名は Spring Data クエリ メソッド名の命名規則に正しく従っていますか?

4

1 に答える 1

1

プロパティを参照し、並べ替え方向 (Asc または Desc) を指定するクエリ メソッドに OrderBy 句を追加することにより、静的な順序付けを適用できます。Spring Data JPA - リファレンス ドキュメント

考えられる問題:

  • "findByid..." <- id は小文字です
  • あなたは「 eid 」で検索したいと言っているので、おそらく「findByEid ...」であるはずです。
  • 注文方向を指定していません<- これがおそらく主な問題です。

リポジトリ:

public interface EmployeeRepository extends
    PagingAndSortingRepository<Employee, Integer> {

    public List<Employee> findByEidAndHireDateBetweenOrderByProjectIdDesc(
        String eid, Date first, Date last);
}

従業員エンティティ:

@Entity
@Table(name = "employee")
public class Employee implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @SequenceGenerator(name = "employee_sequence", sequenceName = "employee_sequence",     allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "employee_sequence")
    @Column(name = "id", unique = true, nullable = false)
    private Integer id;

    @Column(name = "eid", nullable = false)
    private String eid;

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

    @Column(name = "projectId", nullable = false)
    private Integer projectId;

    public Employee() {
    }

    // ...
    // Setters / Getters
    // ...

    // ...
    // eclipse generated hashCode / equals / toString
    // ...
}

このコードは私のマシンで動作します:

  • データベース: PostgreSQL
  • ORM 実装: hibernate 4.1.9
  • 春: 3.2.0.RELEASE
  • 春のデータ: 1.2.0.RELEASE

動的ソートをサポートするクエリ メソッドを作成する場合 - Spring Data JPA - 1.3.2.3. 特別なパラメータ処理

于 2012-12-19T17:50:05.153 に答える