Я пытаюсь получить простые отношения FK 1-N, работающие с DataNucleus JDO. У меня есть классы GridDO и GridColumnDO с соответствующими геттерами и сеттерами. Я пытаюсь установить, что сетка имеет несколько столбцов. Таблица entity_attribute (GridColumn) имеет столбец FK (с именем entity_id) для PK таблицы объекта (сетки) (также называемой entity_id). Я работал с the example code на сайте DataNucleus. Я могу загрузить объект GridDO, но когда я пытаюсь получить столбцы, я получаюПростые отношения NK FK
Iteration request failed : SELECT 'com.mycompany.myapplication.data.GridColumnDO' AS NUCLEUS_TYPE,A0.DISPLAY_NAME,A0.COLUMN_ORDER,A0.PROPERTY_NAME,A0.ENTITY_ID,A0.ENTITY_ATTRIBUTE_ID,A0.VALUE_TYPE FROM ENTITY_ATTRIBUTE A0 WHERE A0.ENTITY_ID = ?
org.datanucleus.exceptions.NucleusDataStoreException: Iteration request failed : SELECT 'com.mycompany.myapplication.data.GridColumnDO' AS NUCLEUS_TYPE,A0.DISPLAY_NAME,A0.COLUMN_ORDER,A0.PROPERTY_NAME,A0.ENTITY_ID,A0.ENTITY_ATTRIBUTE_ID,A0.VALUE_TYPE FROM ENTITY_ATTRIBUTE A0 WHERE A0.ENTITY_ID = ?
...
Caused by: java.sql.SQLException: Parameter #1 has not been set.
Кто-нибудь знает, что я могу делать неправильно? Я искал и стучал в это какое-то время, без реальной удачи. Это отрывок из пакета-mssql.orm:
<class name="GridDO" identity-type="application" table="entity">
<field name="id" primary-key="true">
<column name="entity_id"/>
</field>
<field name="columns">
<collection element-type="com.mycompany.myapplication.data.GridColumnDO"/>
<element column="entity_id"/>
</field>
...
</class>
<class name="GridColumnDO" identity-type="application" table="entity_attribute">
<field name="id" primary-key="true">
<column name="entity_attribute_id"/>
</field>
...
</class>
Вы не можете повторно использовать столбец «entity_id» в GridColumnDO для FK отношения в GridDO. Сопоставьте свой 1-N FK uni-отношение в соответствии с документами, на которые вы ссылаетесь (которые вы в настоящее время не используете). – DataNucleus
Спасибо, что ответили. Было бы полезно, если бы вы сказали мне, что я на самом деле делаю неправильно. Я пытался найти то, что я испортил, и я просто этого не вижу. FYI, и я отредактирую сообщение, обе таблицы имеют столбец entity_id. На сущности это ПК. В атрибуте entity_attribute это FK. –
О, я понимаю, о чем вы говорите. Я вытащил поле gridId из таблицы GridColumnDO. Все еще видя ту же проблему. Я отредактирую сообщение, чтобы отразить обновленный файл ORM. –