【发布时间】:2014-07-15 03:46:06
【问题描述】:
我在 Eclipse 中将上述代码作为一个 webapp 在 tomcat 中运行。
该项目在windows平台上运行良好,现在我已将其迁移到Linux(OpenSuse 12.3),以下代码从mysql DB返回用户。
@Override
public User getUserByLoginID(String userLogin) {
log.info("getUserByLoginID(String userLogin)");
User returnUser = null;
session = sessionFactory.getCurrentSession();
Criteria criteria = session.createCriteria(User.class).add(
Restrictions.eq("userLoginEmail", userLogin));
if (criteria.list() != null) {
List<User> users = criteria.list();
if (users.size() > 1) {
// Should never happen
throw new RuntimeException(
"Invalid number of users with same login id.");
}
if (!users.isEmpty()) {
returnUser = users.get(0);
}
}
return returnUser;
}
我检查了以下行,users.size(),它在窗口中给出了结果,但在 OpenSuse/Linux 中没有。
我在两台机器上都安装了mysql。 用户存在于两个数据库中。
我怀疑我可能需要为 mysql 数据库配置一些用户/组配置。 任何想法,我该如何进一步调试,排除故障?
任何帮助将不胜感激。
【问题讨论】:
-
尝试从您的 linux 平台从 java 代码连接到 Windows 上的 db。看看它是否正在获取数据。如果是,那么您的 linux 平台上的 db 设置不正确。
-
数据库名在linux平台上区分大小写,在windows下不区分大小写。确保用于 Java 查询的数据库名称与 DBMS 中存在的名称匹配。
-
@f1sh,数据库名称大小写正确,因为tomcat可以连接数据库,否则启动时会抛出异常。
-
@f1sh,数据库名大小写正确,但表名大小写不同,但问题是我以用户身份运行时,日志中没有抛出异常。
标签: java mysql linux hibernate tomcat