相关疑难解决方法(0)

JPA2:不区分大小写,就像匹配任何地方一样

我一直在JPA 1.0(Hibernate驱动程序)中使用Hibernate Restrictions.定义了Restrictions.ilike("column","keyword", MatchMode.ANYWHERE)哪些测试关键字是否匹配列的任何位置,并且它不区分大小写.

现在,我使用JPA 2.0和EclipseLink作为驱动程序,因此我必须使用"Restrictions"内置JPA 2.0.我发现CriteriaBuilder和方法like,我也发现了如何使它匹配任何地方(尽管它是令人讨厌和手动),但我仍然没有想出如何做它不区分大小写.

我目前有一个很好的解决方案:

CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<User> query = builder.createQuery(User.class);
EntityType<User> type = em.getMetamodel().entity(User.class);
Root<User> root = query.from(User.class);

// Where   
// important passage of code for question  
query.where(builder.or(builder.like(root.get(type.getDeclaredSingularAttribute("username", String.class)), "%" + keyword + "%"),
        builder.like(root.get(type.getDeclaredSingularAttribute("firstname", String.class)), "%" + keyword + "%"),
        builder.like(root.get(type.getDeclaredSingularAttribute("lastname", String.class)), "%" + keyword + "%")
        ));

// Order By
query.orderBy(builder.asc(root.get("lastname")),
            builder.asc(root.get("firstname")));

// Execute
return em.createQuery(query).
            setMaxResults(PAGE_SIZE + 1).
            setFirstResult((page - 1) * PAGE_SIZE).
            getResultList();
Run Code Online (Sandbox Code Playgroud)

问题: …

java criteria eclipselink hibernate-criteria jpa-2.0

47
推荐指数
4
解决办法
6万
查看次数

Heroku上的Rails 3.1中的Postgres重音不敏感LIKE搜索

如何在Rails中修改搜索查询的where/like条件:

find(:all, :conditions => ["lower(name) LIKE ?", "%#{search.downcase}%"])

无论重音如何,结果都是匹配的?(例如métro= metro).因为我使用的是utf8,所以我不能使用"to_ascii".生产正在Heroku上运行.

postgresql ruby-on-rails unaccent rails-postgresql

16
推荐指数
2
解决办法
1万
查看次数

如何在Oracle 10gR2和JPA中对区分大小写和重音不敏感?

在使用JPA的J2EE项目中,如何强制类似查询不区分大小写并且不区分重音?

我知道更改会话变量NLS_COMP和NLS_SORT,但我想知道在查询本身是否还有另一个技巧可以做到这一点,而不更改会话变量

java oracle jpa

10
推荐指数
2
解决办法
2万
查看次数

在两列中查找可能的重复项,忽略大小写和特殊字符

询问

SELECT COUNT(*), name, number
FROM   tbl
GROUP  BY name, number
HAVING COUNT(*) > 1
Run Code Online (Sandbox Code Playgroud)

它有时无法在小写和大写之间找到重复.
例如:sunny并且Sunny不会显示为重复项.
那么如何在PostgreSQL中为两列找到所有可能的重复项.

sql postgresql case-insensitive duplicates pattern-matching

7
推荐指数
1
解决办法
1万
查看次数