日期:2014-05-20  浏览次数:20611 次

一个简单的数据库数据存入取出动作,为什么出现问题?
我用的play框架...
问题是这样的:
Java code

public static void addParent() throws InterruptedException { // 写死
        Date insertTime = new Date();
        Parent parent = new Parent();
        parent.fullName = "新增家长";
        parent.fullNamePinyin = "xin zeng jia zhang";
        parent.save();//往数据库里面存入一条数据
        List<Long> idFromDB = methodForDocs.getParentList(insertTime);//紧接着从数据库里面取出该条数据(更具createTime字段)

        System.out.println("idFromDBSize:" + idFromDB.size());
        for (int i = 0; i < idFromDB.size(); i++) {
            System.out.println("***idFromDB:" + idFromDB.get(i));
        }
        renderJSON(new Result("测试通过!"));
    }


getParentList方法是这样的:
Java code

(该方法是没有问题的)
public static List<Long> getParentList(Date insertTime) {
        String hql = "select id from Member where createTime>?";
        System.out.println("insertTime:" + insertTime.toString());
        List<Long> ids = Member.find(hql, insertTime).fetch();
        return ids;
    }


可是不知道为什么idFromDBSize总是等于0,应该等于1才对啊!?不知道为什么???

------解决方案--------------------
insertTime 设置小点吧,而且应该insert后再取值,另外SQL语句的>应该是>=

如果数据库服务器跟你本机不是一台的话,你还得检查时间是否一致。

总的来说,你这个程序的逻辑很奇怪,万一是并发写入多条数据,你这个不是就乱了?