簡體   English   中英

播放框架上的JPA枚舉查詢錯誤

[英]JPA enum query ERROR on playframework

我正在使用Java playframework 1.2.4進行項目,並且有一個@Entity類。 看起來像

@Entity
public class EmployeeType extends Model {
    public static enum TYPE { HOURLY, DAILY, MONTHLY };
    public static enum NATIONALITY { LOCAL, FOREIGN };
    @Required
    @Enumerated(EnumType.STRING)
    public TYPE type;
    @Required
    @Enumerated(EnumType.STRING)
    public NATIONALITY nationality;
}

在我的控制器類中,我想使用我的2個枚舉屬性獲取EmployeeTypes的列表。 查詢看起來像

Query query = JPA.em().createQuery("SELECT e FROM EmployeeType e where " +
            "e.nationality = :nationality " +
            "and e.type = :type");
query.setParameter("nationality", NATIONALITY.LOCAL);
query.setParameter("type", TYPE.HOURLY);

List<models.EmployeeType> employeeType = query.getResultList()

給出此錯誤:發生IllegalArgumentException:參數值[LOCAL]與類型[models.EmployeeType $ NATIONALITY]不匹配

我該怎么辦?

該錯誤可能是因為您的enum嵌套在您的實體中。 您需要以實體名稱訪問它。

您可以將setParameter代碼更改為:-

query.setParameter("nationality", EmployeeType.NATIONALITY.LOCAL);
query.setParameter("type", EmployeeType.TYPE.HOURLY);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM