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 回答