我正在使用Java 7和GlassFish 4.1.1创建Java EE Web项目。我的IDE是NetBeans。
当从存储库类重构一些代码时,我用模型类上的静态final字符替换了字符串“USERS”。在执行此操作(清理和构建)后,我立即从我的服务中获得了IllegalArgumentException,并发现该字段被读为null。
模特课:
public class User {
public static final String TABLE_NAME = "USERS";
public static final String PRIMARY_KEY = "ID";
private String id;
private String name;
public User(String id, String name) {
this.id = id;
this.name = name;
}
}
用户存储库,之前:
public List<User> get() throws RepositoryException
{
try {
return service.retrieve("USERS");
} catch (SQLException ex) {
throw new RepositoryException("Retrieval failed.", ex);
}
}
用户存储库,在:
之后public List<User> get() throws RepositoryException
{
try {
return service.retrieve(User.TABLE_NAME);
} catch (SQLException ex) {
throw new RepositoryException("Retrieval failed.", ex);
}
}
关于这个可能最奇怪的事情(但可能很有启发性?)是,如果我改变字段的值,问题就会消失。
// This works!
public static final String TABLE_NAME = "USERSS";
当然,TABLE_NAME的价值现在是错误的。
这是我尝试过的:
非常感谢任何帮助! :)