http://www.tkk7.com/Files/zhaijianhui/ejb插刪改查.rar
/*
對表的修改
*/
public void updateNode(UseInfoDto dto) {
??? UseInfo useinfo;
?? try {
???? System.out.println("===========");
??? useinfo=home.findByPrimaryKey(dto.getName());
??? useinfo.setPassword(dto.getPassword());
??? System.out.println("用戶名"+dto.getName()+"修改后的記錄密碼"+dto.getPassword());
?? }
?? catch (Exception ex) {
???? ex.printStackTrace();
???? System.out.println("修改記錄出現(xiàn)異常");
?? }
? }
因為name作為主鍵,所以不可能再在這里調(diào)用setName("xxxxxw")方法了,,
否則會產(chǎn)生錯誤:
javax.ejb.TransactionRolledbackLocalException: EJB Exception: ; nested exception
?is: java.lang.IllegalStateException: [EJB:010144]The setXXX method for a primar
y key field may only be called during ejbCreate.
java.lang.IllegalStateException: [EJB:010144]The setXXX method for a primary key
?field may only be called during ejbCreate.
想一想有沒有必要修改主鍵的值呢,很顯然是沒有必要的,看看當(dāng)今的一些應(yīng)用就知道,電信,銀行這些部門只提供注冊用戶的一般資料驗證,不會允許你去改用戶名的..
/*
對表增加一條記錄
*/
?public void addNode(UseInfoDto dto) {
??? UseInfo useinfo;
?try {
?? System.out.println("home=========="+home);
??? useinfo = home.create(dto.getName());
??? //useinfo.setName(dto.getName());
??? useinfo.setPassword(dto.getPassword());
??? System.out.println("調(diào)用 了addNode");
??? System.out.println("創(chuàng)建了新記錄為"+dto.getName()+":"+dto.getPassword());
?}
?catch (CreateException ex) {
?? ex.printStackTrace();
?? System.out.println("創(chuàng)建遠程接口實例時出異常");
?}
這也和上面的一個道理,因為主鍵字段不允許暴露給客戶setXXX方法,所以我們要創(chuàng)建一個create(主鍵)給客戶調(diào)用,這樣我們就可依我上面所做的方式創(chuàng)建一條記錄了,,
注意在ejbCreate(XXX)方法里要加上一句? setXXX(XXX);否則會報錯的喲
因為ejbCreate在服務(wù)器本地調(diào)用所以可以調(diào)用setXXX方法.
ok,祝旅途愉快!