求助Exception: the model Id=(1) maybe be deleted!

05-11-22 yalongxiao
Banq大哥你好。我在学习jdon framework中遇到了Exception: the model Id=(1) maybe be deleted!的问题。
我是按你的Struts +Jdon + Hibernate学习的,不过我用的是oracle9i与hibernate3。
数据库的主键名:ID,类型NUMBER。
jdonframework.xml里model的主键名:accountId。
dao类的sql:select ID from USER
.hbm.xml:<id name="accountId" type="integer">
<column name="ID" />
请问哪里错了?

别外还有你的实例里jdonframework.xml的model主键名:userId在程序哪里被引用?

谢谢谢谢………………

yalongxiao
2005-11-22 16:25
刚才别外做了一个test,用mysql的,数据库里如果accountId为integer也会出同样一种错误,换成string就没有错了。
难道只能用string类型的?

banq
2005-11-22 18:18
>数据库的主键名:ID,类型NUMBER
accountId的类型是你的模型中的主键,和数据库一般无关。
你的模型对象是USER,那么accountId是其主键字段。
支持Integer和String类型

yalongxiao
2005-11-23 12:13
我试改了很多次你的struts+jdon+hibernate实例,把数据库userId的类型改成int型的使用,但都会报错。
错误提示:

改成把数据库里的userId的类型改成varchar类型就没问题了。
按大哥你说的应该与数据库类型无关啊。到底是什么原因啊?哪里出错了?

banq大哥如果有时间,能把struts+jdon+hibernate实例的数据库userId项改成int的吗?郁闷死了……

banq
2005-11-23 12:48
从这个现象看,和你的数据库数据有关,在这此批量查询中,主键中有的是整数型,有的是字符串。

我自己测试过,没有问题,我将Usertest主键换成Long型都可以。

yalongxiao
2005-11-23 15:14
我还是改不好啊。
数据库里的userId类型为varchar型时,把Model里的userId改成int型就会在执行JdbcDAO类里的:user = (UserTest) session.get(UserTest.class, Id);时出错,setUserId数据不匹配。但是把MySQL数据库的userId类型改成int型后,根本就执行不到这里,在UserListAction的findModelByKey方法之前就出错了,怎么样也轮不到JdbcDAO类里的:user = (UserTest) session.get(UserTest.class, Id);语句的执行。

banq大哥,能不能把你改过后测试通过的实例源文件发给我?让我仔细看看。多谢……

我的
E-mail:yalongxiao@gmail.com
QQ:153994880
MSN:yalongxiao@gmail.com

yalongxiao
2005-11-24 17:36
Banq大哥救救我啊。
要不然要学不下去了。

banq
2005-11-25 09:23
发了N多次了,gmail收信不好。

yalongxiao
2005-11-25 14:25
那能不能发送到:yalongxiao@qq.com
这个邮箱啊。
谢谢,谢谢,万分感谢。

yalongxiao
2005-11-30 17:32
Banq大哥,抽个时间发个改了的例子到我的QQ邮箱:yalongxiao@qq.com
好吗?

谢谢……

猜你喜欢