SOS?求教运行CMP之create,能正常运行,但数据库中无数据

03-10-15 dlpww
在JBOSS3环境下,调用CMP实体之create添加数据,正常运行,但表中未有数据增加,已折腾我N天,急求教?

ProductBeanTestClient1 client = new ProductBeanTestClient1();

try {

client.create("-893", "SD-64", "64 MB SDRAM", 50);

Iterator i = client.findByName("SD-64").iterator();

System.out.println("These products match the name SD-64:");

while (i.hasNext()) {

Product prod = (Product) PortableRemoteObject.narrow(i.next(), Product.class);

System.out.println(prod.getDescription());

}

}

catch (Exception e) {

e.printStackTrace();

}

myproject2.ProductBeanTestClient1

以下是在Jbuilder8下第一次执行的情况,正常执行(数据库sql server2000),但表中没有增加数据据,通过sql profiler未检测到发向sql server的sql语句。

-- Initializing bean access.-- Succeeded initializing local bean access through Local Home interface.-- Execution time: 2164 ms.-- Calling create(-891, P5-400, 400 Mhz Pentium, 300.0)-- Succeeded: create(-891, P5-400, 400 Mhz Pentium, 300.0)-- Execution time: 40 ms.-- Return value from create(-891, P5-400, 400 Mhz Pentium, 300.0): ProductBeanRemote:myproject2.Product ...-- Calling findByName(SD-64)-- Succeeded: findByName(SD-64)-- Execution time: 40 ms.-- Return value from findByName(SD-64): [].These products match the name SD-64:

以下是在Jbuilder8下第二次执行同样代码的情况,出错(数据库sql server2000),主键异常。

-- Calling create(-895, SD-256, 256 MB SDRAM, 200.0)javax.ejb.DuplicateKeyException: Entity with primary key myproject2.ProductPK@154e07 already exists at org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.execute(JDBCCreateEntityCommand.java:128) at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.createEntity(JDBCStoreManager.java:527) at org.jboss.ejb.plugins.CMPPersistenceManager.createEntity(CMPPersistenceManager.java:253)-- Failed: create(-895, SD-256, 256 MB SDRAM, 200.0) 。。。-- Return value from create(-895, SD-256, 256 MB SDRAM, 200.0): null.-- Calling findByName(SD-64)-- Succeeded: findByName(SD-64)-- Execution time: 130 ms.-- Return value from findByName(SD-64): [].These products match the name SD-64:

create table productbean(

productID varchar(60) not null primary key,

name varchar(60),

description varchar(200),

basePrice numeric(8,2) default 0.00

);

mep
2003-10-15 14:28
J2EE服务器并不是在add/update实体Bean以后,马上就把值存放到DB中,而是将值保存在内存中;至于何时更新数据库,就要看实现了

mep
2003-10-15 14:32
换句话说,第一次执行时完全正确的;

第二次执行相同的程序,但是前次的结果还存在,因此出错(因为相同的primarykey)

dlpww
2003-10-16 12:13
若内存的数据和数据库不一致,如何进业处理?

dlpww
2003-10-16 12:15
若内存的数据和数据库不一致,如何进行业务处理?比如在取款机上取款,若数据库未修改,银行如何统计发生额.

猜你喜欢
4Go 1 2 3 4 下一页