Hi,
I have an m:n relationship that works fine on queries but generates an empty
insert when adding entries.
Table 1: PDCUserRole
Table 2: PDCUserRight
x-Table: PDCUserRolePDCUserRight
Here are the relevant parts of my map.xml:
<db-entity name="PDCUserRolePDCUserRight">
<db-attribute name="userRightRef" type="INTEGER"
isPrimaryKey="true" isGenerated="true" isMandatory="true"/>
<db-attribute name="userRoleRef" type="INTEGER"
isPrimaryKey="true" isGenerated="true" isMandatory="true"/>
</db-entity>
<db-relationship name="pcdUserRolePCDUserRightArray"
source="PDCUserRight" target="PDCUserRolePDCUserRight" toDependentPK="true"
toMany="true">
<db-attribute-pair source="userRightKey" target="userRightRef"/>
</db-relationship>
<db-relationship name="pcdUserRolePCDUserRightArray"
source="PDCUserRole" target="PDCUserRolePDCUserRight" toDependentPK="true"
toMany="true">
<db-attribute-pair source="userRoleKey" target="userRoleRef"/>
</db-relationship>
<db-relationship name="userRight" source="PDCUserRolePDCUserRight"
target="PDCUserRight" toMany="false">
<db-attribute-pair source="userRightRef" target="userRightKey"/>
</db-relationship>
<db-relationship name="userRole" source="PDCUserRolePDCUserRight"
target="PDCUserRole" toMany="false">
<db-attribute-pair source="userRoleRef" target="userRoleKey"/>
</db-relationship>
<obj-relationship name="userRoleArray" source="PDCUserRight"
target="PDCUserRole"
db-relationship-path="pcdUserRolePCDUserRightArray.userRole"/>
<obj-relationship name="userRightArray" source="PDCUserRole"
target="PDCUserRight"
db-relationship-path="pcdUserRolePCDUserRightArray.userRight"/>
I then have an object "role" and an object "right" and want to create the
relation. I'm essentially doing (through a wrapper method):
role.addToManyTarget( USER_RIGHT_ARRAY_KEY, right, true );
which generates the following SQL:
SELECT t0.longDescription, t0.shortDescription, t0.sortKey, t0.string,
t0.title, t0.value, t0.userRightKey FROM PDCUserRight t0 JOIN
PDCUserRolePDCUserRight t1 ON (t0.userRightKey = t1.userRightRef) WHERE
t1.userRoleRef = ? [bind: 1->userRoleRef:11]
INSERT INTO PDCUserRolePDCUserRight () VALUES ()
which of course produces: org.postgresql.util.PSQLException: ERROR: syntax
error at or near ")"
I read these pages, is there anything more on this?
https://cayenne.apache.org/docs/3.0/flattened-relationships.html
<https://cayenne.apache.org/docs/3.0/flattened-relationships.html>
https://cayenne.apache.org/docs/3.0/cayennemodeler-flattened-relationships.html
<https://cayenne.apache.org/docs/3.0/cayennemodeler-flattened-relationships.html>
What could be wrong? I have the same type of problem on all my m:n
relationships. I created this model by importing the old EOModel, but I also
tried reengineering from database and comparing the two. No meaningful
differences aside from character case and similar details.
Maik