我的数据库中有一个tlogin表,它的主键是 String
类型,称为login。这个密钥不是由hibernate自动生成的,因为它是由应用程序分配的。以下是Map:
<id name="_Login" column="Login" unsaved-value="null">
<generator class="assigned" />
</id>
我的问题出现在用户登录应用程序时。冬眠 get
以及 load
方法似乎返回了一个带有用户在登录窗体中键入的键的对象。我正在尝试以下代码:
@Override
public CLogin loadLogin(String userName) throws AccessException {
try {
Session sesion = this._dao.init();
CLogin login = (CLogin) sesion.get(CLogin.class, userName);
return login;
} catch (HibernateException e) {
throw new AccessException(e.getMessage(), e);
}
}
例如,这里甚至用户名也存储为example@hotmail.com 在数据库中,如果最终用户使用example@hotmail.com,它将从数据库中检索对象,但是example@hotmail.com 钥匙。我想允许用户访问应用程序,但我想得到他的用户名,因为它存储在数据库中。
我必须执行一个标准吗?
2条答案
按热度按时间inb24sb21#
我个人会去(作为一个命名查询)
但还有其他方法。
请参阅mysql不区分大小写选择
rlcwz9us2#
我最终实现了使用hibernate标准来解决它。我用一个
ilike
限制是一种不敏感的类型,除了MatchMode.Exact
,只允许筛选完全匹配的。这就是它的工作原理: