n:m <relation-table> is not used
smilidon Jul 19, 2005 9:00 AMHi,
i get an exception when calling my finder. i use a relationtable(report_role_map) that is not created by jboss. my finder always uses a table t2_r_roles_RELATION_TABLE, that (of course) dont exists. can somebody help please?
error:
14:39:13,808 DEBUG [Report#findReportByRole] Executing SQL: SELECT t0_r.id FROM report t0_r WHERE ((t2_r_roles_RELATION_TABLE.fk_role_id IS NOT NULL AND t2_r_roles_RELATION_TABLE.fk_report_id=?)) 14:39:13,808 ERROR [Report#findReportByRole] Find failed java.sql.SQLException: Unknown table 't2_r_roles_RELATION_TABLE' in where clause at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2851) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1531) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1622)
my jbosscmp-jdbc:
<relationships> <ejb-relation> <ejb-relation-name>Report-Role</ejb-relation-name> <relation-table-mapping> <table-name>report_role_map</table-name> <create-table>false</create-table> <remove-table>false</remove-table> </relation-table-mapping> <ejb-relationship-role> <ejb-relationship-role-name>Report-has-Roles</ejb-relationship-role-name> <fk-constraint>true</fk-constraint> <key-fields> <key-field> <field-name>id</field-name> <column-name>fk_role_id</column-name> </key-field> </key-fields> </ejb-relationship-role> <ejb-relationship-role> <ejb-relationship-role-name>Role-has-Reports</ejb-relationship-role-name> <fk-constraint>true</fk-constraint> <key-fields> <key-field> <field-name>id</field-name> <column-name>fk_report_id</column-name> </key-field> </key-fields> </ejb-relationship-role> </ejb-relation>
my tables:
CREATE TABLE `role` ( `id` int(11) NOT NULL default '0', `rolename` varchar(32) NOT NULL default '', PRIMARY KEY (`id`) ) CREATE TABLE `report` ( `id` int(10) unsigned NOT NULL auto_increment, `comment` varchar(100) NOT NULL default '', PRIMARY KEY (`id`) ) relation-table: CREATE TABLE `report_role_map` ( `fk_report_id` int(11) NOT NULL default '0', `fk_role_id` int(11) NOT NULL default '0' )
my finder:
* @ejb.finder signature = "java.util.Collection findReportByRole(de.entity.interfaces.RoleLocal role)" * query = "SELECT OBJECT(r) FROM Report AS r WHERE ?1 MEMBER OF r.roles"
if you need more information please tell me...
thx a lot