我想从数据库中选择结果列表,但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);
答案 0 :(得分:5)
您需要以不区分大小写的方式存储字段的副本 - 例如,小写,但如果可用的话,“整理情况”会更好。然后,查询。
原因是没有办法以“不区分大小写”的方式有效搜索常规索引。
答案 1 :(得分:4)
JDOQL有一些可用的String方法。查看文档here。
要解决您的问题,您可以执行以下操作:
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());