【发布时间】:2014-08-01 07:42:20
【问题描述】:
我写了一个控制器,如下所示
@RequestMapping(value="find/{roleName}", method=GET)
public UserRole getByRoleName(@PathVariable("roleName") String roleName){
UserRole userRole = userRoleService.findByRoleName(roleName);
return userRole;
}
UserRole is nothing but that is given below as shown that
@Entity
@Table(name = "uro_user_roles") 公共类用户角色 {
/* Properties */
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "uro_role_id")
private Integer roleId;
@Column(name = "uro_role_name")
private String roleName;
@Column(name = "uro_create_user")
private String createUser;
@Column(name = "uro_active")
private String createActive;
/* Getter / Setters */
现在,当我使用以下 Hibernate 函数给出 roleName 时,我得到了数据库数据,这就是
public UserRole findByRoleName(String roleName) {
UserRole userPermission = (UserRole)
criteria().setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.add(eq("roleName", roleName)).uniqueResult();
return userPermission;
}
我的问题是,当我给出确切的名称时,它只返回对象,因为它区分大小写。我的意思是,如果表数据在其值之前有一些空间,那么它不会返回。那么如何通过给定一个没有空格和区分大小写的名称来获取数据。hibernate 中是否有任何选项可以从数据库中获取数据并消除空格?如果有一个选项,则无需编写您要求的 Trim() 方法。请大家帮忙
【问题讨论】:
-
可能你可以使用正则表达式。然后,您将获得与该模式匹配的所有结果。我猜这会是更好的方法
-
我已经更新了我的答案。立即尝试。
-
我的回答对你有帮助吗?
-
没有。我想要 .add(eq("rolename", roleName.trim().toLowerCase())).uniqueResult();。但我不知道这是对还是错,我也试过这个但没有改变
标签: java mysql spring hibernate jpa