2013-12-12 2 views
0

Я пытаюсь получить простые отношения 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> 
+0

Вы не можете повторно использовать столбец «entity_id» в GridColumnDO для FK отношения в GridDO. Сопоставьте свой 1-N FK uni-отношение в соответствии с документами, на которые вы ссылаетесь (которые вы в настоящее время не используете). – DataNucleus

+0

Спасибо, что ответили. Было бы полезно, если бы вы сказали мне, что я на самом деле делаю неправильно. Я пытался найти то, что я испортил, и я просто этого не вижу. FYI, и я отредактирую сообщение, обе таблицы имеют столбец entity_id. На сущности это ПК. В атрибуте entity_attribute это FK. –

+0

О, я понимаю, о чем вы говорите. Я вытащил поле gridId из таблицы GridColumnDO. Все еще видя ту же проблему. Я отредактирую сообщение, чтобы отразить обновленный файл ORM. –

ответ

0

Проблема в том, что PersistenceCapable и PrimaryKey должны либо оба быть идентифицированы с помощью аннотаций или как быть идентифицированы с помощью метаданных. У меня был PersistenceCapable в аннотации и PrimaryKey в моем файле .orm.

Смежные вопросы