3

データベースから結果のリストを選択したいの==ですが、JDO クエリの演算子では大文字と小文字が区別されます。単一のパラメーターを使用してテーブルから「USER」、「user」、および「User」を選択する方法はありますか?

MySQL にはLIKE演算子があり、Java にはequalsIgnoreCase関数があります。ただし、この例ではどちらも機能しません。

PersistenceManager pm = JDO.factory.getPersistenceManager();

Query query = pm.newQuery(User.class, "username == usernameParam");
query.declareParameters("String usernameParam");

List<User> results = (List<User>) query.execute(username);
4

2 に答える 2

5

大文字と小文字を区別しない方法でフィールドのコピーを保存する必要があります-たとえば、小文字ですが、「照合ケース」が利用可能な場合はより適切です。次に、それについてクエリします。

これは、「大文字と小文字を区別しない」方法で通常のインデックスを効率的に検索する方法がないためです。

于 2010-07-30T10:24:36.273 に答える
4

JDOQL には、利用可能な String メソッドがいくつかあります。こちらのドキュメントを確認してください。

問題を解決するには、次の手順を実行できます。

PersistenceManager pm = JDO.factory.getPersistenceManager();

Query query = pm.newQuery(User.class, "username.toUpperCase() == usernameParam");
query.declareParameters("String usernameParam");

List<User> results = (List<User>) query.execute(username.toUpperCase());
于 2012-02-11T15:12:08.003 に答える