Hibernate添加一条记录后立即查询数据库记录总数时没有发生变化? 不知道为什么我往Hibernate中插入一条记录后,打开数据库刷新后看了一下,发现里面已经有了那条数据,但是当我紧接着在查询记录总数是缺没有这一条,很是郁闷,请高手指定一二! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有提交的话数据库里面应该没有那条记录的呀,但是我插入一条记录后数据库刷新一下,里面已经有那条记录了,代码如下:(我的数据库中administrator表中的主键是id,但是id不是自动增长的,也不是int型的,是char的,6位,格式为:CKA012,意思就是说仓库管理员,12的获得就是我插入时候,先从数据库中读取全部记录,遍历id,比较其中的后三位数字,找出最大的一个,然后将新增加的这个administrator的id设为最大+1,然后再存入数据库)插入代码:public String saveAdministrator(Administrator admin) { Session s = null; Transaction tx = null; try { s = HibernateUtil.getSession(); tx = s.beginTransaction(); List<Administrator> administrators = new AdministratorDaoImpl().findAllAdministrator();// 定义idArray数组,用来存取表中管理员的id中的数字 int[] idArray = new int[administrators.size()]; System.out.println("目前数据库中记录为 : " + idArray.length); int i = 0; for (Administrator administrator : administrators) { idArray[i++] = Integer.parseInt(administrator.getId().substring(3)); }// 从idArray中找到最大的id值 int idMax = idArray[0]; for (int j = 0; j < idArray.length; j++) { if (idMax <= idArray[j]) { idMax = idArray[j]; } } if (admin.getType() == 1) { admin.setId("CKA" + String.format("%03d", idMax+1)); }else if(admin.getType() == 2){ admin.setId("CGA" + String.format("%03d", idMax+1)); }else if(admin.getType() == 3){ admin.setId("GCA" + String.format("%03d", idMax+1)); } s.save(admin); tx.commit(); return admin.getId(); }finally{ if (s != null) { s.close(); } } }查找代码:public List findAllAdministrator() { Session s = null; Transaction tx = null; try { s = HibernateUtil.getSession(); tx = s.beginTransaction(); List adminList = s.createQuery("from Administrator as admin").list(); Hibernate.initialize(adminList); return adminList; } finally{ if (s != null) { s.close(); } } }HibernateUtil是Netbeans自动生成的,就是按照上面的思路来进行管理员添加的,但是每增加一个记录之后,紧接着插入第二个记录时就会发现此时获取的数据库记录没有增加,不知道为什么…… 在saveAdministrator方法中把session对象作为参数传到findAllAdministrator(Session s)看看.. 你用的是两个不同session你一个session操作并没有让另一个知道所以你查询出来是没有的 求解 struts2 重写vaidate方法后, 这段代码什么意思?高人指点下! 关于数组的问题! 关于checkbox,在form中,有多个jsp文件需要同一form中的checkbox值 weblogic8.1怎么样启动? SmartUpload 类在编译的时候被删除了,怎么解决? 在RESIN服务器里SERVLET防在哪个目录下呀 谁知道如何在jsp中调用一个控制台程序? JSP页面如何正常显示“旸”字 请问:如何在java中调用系统当前的时间? 请教struts中的NoSuchMethodException的问题 读取EXCEL到数据库中?
插入代码:public String saveAdministrator(Administrator admin) {
Session s = null;
Transaction tx = null;
try {
s = HibernateUtil.getSession();
tx = s.beginTransaction();
List<Administrator> administrators = new AdministratorDaoImpl().findAllAdministrator();
// 定义idArray数组,用来存取表中管理员的id中的数字
int[] idArray = new int[administrators.size()];
System.out.println("目前数据库中记录为 : " + idArray.length);
int i = 0;
for (Administrator administrator : administrators) {
idArray[i++] = Integer.parseInt(administrator.getId().substring(3));
}
// 从idArray中找到最大的id值
int idMax = idArray[0];
for (int j = 0; j < idArray.length; j++) {
if (idMax <= idArray[j]) {
idMax = idArray[j];
}
}
if (admin.getType() == 1) {
admin.setId("CKA" + String.format("%03d", idMax+1));
}else if(admin.getType() == 2){
admin.setId("CGA" + String.format("%03d", idMax+1));
}else if(admin.getType() == 3){
admin.setId("GCA" + String.format("%03d", idMax+1));
}
s.save(admin);
tx.commit();
return admin.getId();
}finally{
if (s != null) {
s.close();
}
}
}
查找代码:
public List findAllAdministrator() {
Session s = null;
Transaction tx = null;
try {
s = HibernateUtil.getSession();
tx = s.beginTransaction();
List adminList = s.createQuery("from Administrator as admin").list();
Hibernate.initialize(adminList);
return adminList;
} finally{
if (s != null) {
s.close();
}
}
}
HibernateUtil是Netbeans自动生成的,就是按照上面的思路来进行管理员添加的,但是每增加一个记录之后,紧接着插入第二个记录时就会发现此时获取的数据库记录没有增加,不知道为什么……
看看..
你一个session操作并没有让另一个知道
所以你查询出来是没有的