帮忙看一下第八章一对一关系映射的问题!在此多谢大家!

04-10-12 tusm
在第八章中,表category和表category_details是一对一的关系,关系配置如下:

<ejb-relation>

<ejb-relation-name>category-categoryDetails</ejb-relation-name>

<foreign-key-mapping/>

<ejb-relationship-role>

<ejb-relationship-role-name>CategoryRelationshipRole</ejb-relationship-role-name>

</ejb-relationship-role>

<ejb-relationship-role>

<ejb-relationship-role-name>CategoryDetailsRelationshipRole</ejb-relationship-role-name>

<key-fields>

<key-field>

<field-name>catId</field-name>

<column-name>category_details_Id</column-name>

</key-field>

</key-fields>

</ejb-relationship-role>

</ejb-relation>

但插入数据时就会出错,会凭空多一个字段,通过后台生成的语句可以看到,如下:

[org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.Category] Insert Entity SQL: INSERT INTO category (catId, category_details_Id) VALUES (?, ?)

[org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand.CategoryDetails] Insert Entity SQL: INSERT INTO category_details (catId, description, name, Category_categoryDetails) VALUES (?, ?, ?, ?)

本来category_details只有三个字段,而容器生存的sql却多加了一个字段Category_categoryDetails,什么原因?

数据库:mysql 服务器:jboss-3.0.8_tomcat-4.1.24

banq
2004-10-13 09:21
这是建立CMR关系时需要注意的,不能在两个表的主键之间建立CMR,而应该是一主一付。

tusm
2004-10-13 15:49
换了一个高版本(jboss4.0)就可以了。

另外一个问题:在EJB和WEB层分别用了一个服务定位器(ServiceLocator),所不同的是EJB层的没有用到“缓存”机制和“单点”机制,为什么EJB层的查找不能缓存起来呢?

猜你喜欢