0

私のギア:

私のエンティティクラスはシンプルで、

@Entity
@Table(name = "RegistrationRequests")
public class RegistrationRequest {

    @Id
    @GeneratedValue
    Integer id;
    String uuid;
    ... getters and setters ...
}

uuid は UUID.randomUUID().toString() に割り当てられ、データベースに正しく保持されます。今、問題は、Hibernate Criteria を使用してデータベースから保存されたリクエストを取得しようとするときです。

   Criteria criteria = sessionFactory.getCurrentSession().createCriteria(RegistrationRequest.class);
    criteria.add(Restrictions.eq("uuid", '\'' + uuid + '\''));
    List requests = criteria.list();

常に空の結果が得られますが、生成された SQL を実行すると、

select
        this_.id as id2_0_,
        this_.created as created2_0_,
        this_.email as email2_0_,
        this_.isVerified as isVerified2_0_,
        this_.name as name2_0_,
        this_.password as password2_0_,
        this_.surname as surname2_0_,
        this_.uuid as uuid2_0_ 
    from
        RegistrationRequests this_ 
    where
        this_.uuid='ced61d13-f5a7-4c7e-a047-dd6f066d8e67'

結果は正しいです (つまり、データベースから 1 つのレコードが選択されます)。

私はちょっと困惑しています、結果なしですべてを試しました...

4

1 に答える 1

1

hibernate api(私はNhibernateを使用)について知っている限り、where句の値を自分で設定する必要はありません。したがって、where句の値を「myValue」に設定すると、実際には「myValue」に一致する文字列が検索されます。必要に応じて、myValueを検索します。

これに変更すると、うまくいけば機能するはずです。

Criteria criteria = sessionFactory.getCurrentSession().createCriteria(RegistrationRequest.class);
    criteria.add(Restrictions.eq("uuid", uuid));
    List requests = criteria.list();
于 2012-04-15T19:52:16.047 に答える