我试图使用MongoDB和Morphia作为我的后端数据库,我已经实现了一个实用程序类来简化对数据库的访问.我实现了基本的添加用户功能但是我得到了很多例外:
我放的java.lang.IndexOutOfBoundsException异常
Query query = datastore.createQuery(User.class).filter(“name = “,
username);
在评估之前检查用户.
删除后:我得到以下两个例外:
java.lang.RuntimeException: java.lang.NumberFormatException:
如何解决这个问题?
以下是我对该项目的代码:
MorphiaUtil.java:
public class MorphiaUtil {
protected final Log log = LogFactory.getLog(getClass());
private static Mongo mongo;
private static Datastore datastore;
static {
try {
// Create the database connection
mongo = new Mongo("localhost");
datastore = new Morphia().createDatastore(mongo, "mygwtapp");
} catch (UnknownHostException e) {
System.err.println("Caught Unknown host exception:"+e);
e.printStackTrace();
} catch (MongoException e) {
System.err.println("Initial Datastore creation failed:"+e);
e.printStackTrace();
}
}
public static Datastore getDatastore() {
return datastore;
}
}
UserServiceImpl.java
public class UserServiceImpl extends RemoteServiceServlet
implements UserService {
@Override
public void addUser(String username, String password)
throws IllegalArgumentException {
try {
Datastore datastore = MorphiaUtil.getDatastore();
Query query = datastore.createQuery(User.class).filter("name = ", username);
User user = (User) query.asList().get(0);
if (user == null) {
user = new User(username, password);
datastore.save(user);
}
} catch (Exception e) {
System.err.print("Caught exception:"+e);
}
}
}
最佳答案 我创建了所有bean的服务器版本,在调用保存方法之前,我将Simple Beans(在客户端使用)转换为MorphiaBeans(仅用于morphia操作).
这不是解决这个问题的最佳方法,但对我来说效果很好!