2017-03-18 6 views
0

私は次の形式のクラスを持っています。JPAクエリにenumを含める

@Entity 
public class Person{ 
    public enum SEX { 
     MALE, FEMALE, OTHER 
    } 

    private String name; 
    private SEX sex; 
} 

そして、私はJpaRepostoryを拡張するインターフェイスクラスを持っています。列挙型はクエリでは機能しません。私はSpring JPAを使用してデータを取得しようとしています。

public interface PersonRepository extends JpaRepository<Person, Long> { 


    @Query("SELECT p FROM Person p WHERE 
      "p.SEX = com.example.Person.Sex.MALE " + 
      "AND p.name = :name") 
    public List<Person> checkName(@Param("name") String name,); 

} 

私は次の例外

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Invalid path: 'com.example.Person.Sex.MALE'

私はそれをどのように修正することができますを取得しますか?

+0

のいずれかのパラメータを使用し、列挙値 –

+2

に設定する必要があります。列挙型の名前は、性別ではなくSEXです。 Personの性別属性はSEXではなくSEXです。 –

+1

Javaの命名規則に従ってください。実際には間違いを防ぐのに役立ちます。 –

答えて

2

あなたはクラスと属性の大文字と小文字を尊重していません。

p.sex = com.example.Person.SEX.MALE 
関連する問題