jbuilder+weblogic+oracle开发CMR,一对多,一对一关系时候,Error while reading 'META-INF/weblogic-cmp-rdbms-jar.xml'

Kylix_XP 2004-01-14 02:48:48
数据库DDL如下:

--客户表
CREATE TABLE "CUSTOMER" ( -- a customer entry
"CUSTOMER_NUMBER" NUMBER(10) NOT NULL -- 客户编号
, "NAME" VARCHAR2(80) NOT NULL -- 客户名称
, "DESCRIPTION" VARCHAR2(255) -- 描述信息
, "B_GROUP" NUMBER(1) DEFAULT 0 -- 是否集体
, "STATUS" VARCHAR2(10) NOT NULL -- 状态: ACTIVE, FROZEN
, "CONTACT_ID" NUMBER(10) -- 联系信息
, CONSTRAINT "CUSTOMER_PK" PRIMARY KEY("CUSTOMER_NUMBER")
, CONSTRAINT "CUSTOMER_FK_CONTACT" FOREIGN KEY("CONTACT_ID") REFERENCES "CONTACT_INFO"("ID")
);
//联系信息表

CREATE TABLE "CONTACT_INFO" ( -- general purpose contact information
"ID" NUMBER(10) NOT NULL -- primary key
, "NAME" VARCHAR2(80) NOT NULL -- 名称
, "LINE1" VARCHAR2(80)
, "LINE2" VARCHAR2(80)
, "CITY" VARCHAR2(40)
, "STATE" VARCHAR2(40)
, "ZIP" VARCHAR2(20)
, "WORK_PHONE" VARCHAR2(20)
, "HOME_PHONE" VARCHAR2(20)
, "MOBILE_PHONE" VARCHAR2(20)
, "EMAIL" VARCHAR2(100)
, "WEB_ADDRESS" VARCHAR2(100)
, "BANK" VARCHAR2(100) -- 银行
, "ACCOUNT" NUMBER(22) -- 帐号
, "SECRETARY_ID" NUMBER(10) -- 秘书号
, CONSTRAINT "ADDRESS_PK" PRIMARY KEY ("ID")
, CONSTRAINT "ADDRESS_FK_SECRETARY" FOREIGN KEY

);

则JBuilder9中用EJB Desiger设置关系后,设置一对一或者是一对多的关系时候,总是weblogic-cmp-rdbms-jar.xml报错,修改weblogic-cmp-rdbms-jar.xml, 还是抱错
修改后的weblogic-cmp-rdbms-jar.xml如下:


在weblogic-cmp-rdbms-jar.xml配置部分代码如下:
<weblogic-rdbms-relation>
<relation-name>customer-contactInfo</relation-name>
<weblogic-relationship-role>
<relationship-role-name>ContactInfoRelationshipRole</relationship-role-name>
<relationship-role-map>
<foreign-key-table>CUSTOMER</foreign-key-table>
<primary-key-table>CONTACT_INFO</primary-key-table>
<column-map>
<foreign-key-column>CONTACT_ID</foreign-key-column>
<key-column>ID</key-column>
</column-map>
</relationship-role-map>
</weblogic-relationship-role>
</weblogic-rdbms-relation>

CustomerBean 和ContactInfoBean如果为一对一关系时报错如下:
"testPurchase.ejbgrpx": C:\jdk1.3.1_09\bin\javaw -classpath "C:\bea\weblogic700\server\lib\weblogic.jar;C:\bea\weblogic700\server\lib\webservices.jar;C:\ejbforJB\thirdparty\log4j\log4j-core.jar;C:\ejbforJB\thirdparty\log4j\log4j.jar;C:\oracle\ora92\jdbc\lib\classes12.jar;C:\JBuilder90\lib\ext\wasp46\lib\wasp.jar;C:\JBuilder90\lib\ext\wasp46\lib\core_bc.jar;" weblogic.ejbc -keepgenerated -compiler C:/jdk1.3.1_09/bin/javac C:/restaurantForEntity/operation/testEntity/testPurchase.jar.jar C:/restaurantForEntity/operation/testEntity/testPurchase.jar

"testPurchase.ejbgrpx": ERROR: Error from ejbc: Error while reading 'META-INF/weblogic-cmp-rdbms-jar.xml'. The error was:
"testPurchase.ejbgrpx":
"testPurchase.ejbgrpx": In relationship 'customer-contactInfo', role 'ContactInfoRelationshipRole', a weblogic-relationship-role element contains the wrong number of column mappings. A single column mapping must be given for each primary key column in the bean referenced by the mapping.
"testPurchase.ejbgrpx": ERROR: ejbc found errors




...全文
203 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tigerlg 2004-01-19
  • 打赏
  • 举报
回复
你要描述主外键的关系。
Kylix_XP 2004-01-14
  • 打赏
  • 举报
回复



CustomerBean 和ContactInfoBean如果为一对多关系时报错同上面一样.

CustomerBean 源码如下:



import javax.ejb.*;

abstract public class CustomerBean implements EntityBean {
EntityContext entityContext;
public Long ejbCreate(Long customerNumber) throws CreateException {
setCustomerNumber(customerNumber);
........
.......
return null;
}
public void ejbPostCreate(Long customerNumber) throws CreateException {
/**@todo Complete this method*/
}
public void ejbRemove() throws RemoveException {
/**@todo Complete this method*/
}
public abstract void setCustomerNumber(Long customerNumber);
public abstract void setName(java.lang.String name);
public abstract void setDescription(java.lang.String description);
public abstract void setBGroup(int bGroup);
public abstract void setStatus(java.lang.String status);
public abstract void setContactId(Long contactId);
public abstract void setContactInfo(java.util.Set contactInfo);
public abstract Long getCustomerNumber();
public abstract java.lang.String getName();
public abstract java.lang.String getDescription();
public abstract int getBGroup();
public abstract java.lang.String getStatus();
public abstract Long getContactId();
public abstract java.util.Set getContactInfo();
public void ejbLoad() {
/**@todo Complete this method*/
}
public void ejbStore() {
/**@todo Complete this method*/
}
public void ejbActivate() {
/**@todo Complete this method*/
}
public void ejbPassivate() {
/**@todo Complete this method*/
}
public void unsetEntityContext() {
this.entityContext = null;
}
public void setEntityContext(EntityContext entityContext) {
this.entityContext = entityContext;
}
}

ContactInfoBean 代码如下:
package testentity;

import javax.ejb.*;

abstract public class ContactInfoBean implements EntityBean {
EntityContext entityContext;
public Long ejbCreate(Long id) throws CreateException {
setId(id);
//略掉

return null;
}
public void ejbPostCreate(Long id) throws CreateException {
/**@todo Complete this method*/
}
public void ejbRemove() throws RemoveException {
/**@todo Complete this method*/
}
public abstract void setId(Long id);
public abstract void setName(java.lang.String name);
public abstract void setLine1(java.lang.String line1);
public abstract void setLine2(java.lang.String line2);
public abstract void setCity(java.lang.String city);
public abstract void setState(java.lang.String state);
public abstract void setZip(java.lang.String zip);
public abstract void setWorkPhone(java.lang.String workPhone);
public abstract void setHomePhone(java.lang.String homePhone);
public abstract void setMobilePhone(java.lang.String mobilePhone);
public abstract void setEmail(java.lang.String email);
public abstract void setWebAddress(java.lang.String webAddress);
public abstract void setBank(java.lang.String bank);
public abstract void setAccount(long account);
public abstract void setSecretaryId(long secretaryId);
public abstract Long getId();
public abstract java.lang.String getName();
public abstract java.lang.String getLine1();
public abstract java.lang.String getLine2();
public abstract java.lang.String getCity();
public abstract java.lang.String getState();
public abstract java.lang.String getZip();
public abstract java.lang.String getWorkPhone();
public abstract java.lang.String getHomePhone();
public abstract java.lang.String getMobilePhone();
public abstract java.lang.String getEmail();
public abstract java.lang.String getWebAddress();
public abstract java.lang.String getBank();
public abstract long getAccount();
public abstract long getSecretaryId();
public void ejbLoad() {
/**@todo Complete this method*/
}
public void ejbStore() {
/**@todo Complete this method*/
}
public void ejbActivate() {
/**@todo Complete this method*/
}
public void ejbPassivate() {
/**@todo Complete this method*/
}
public void unsetEntityContext() {
this.entityContext = null;
}
public void setEntityContext(EntityContext entityContext) {
this.entityContext = entityContext;
}
}



值得注意的是:如果一个表的字段是主键但同时又REFERENCES另一个表,即同时是主键又作为外键,不会出现上面的问题:

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧