简单的1-N FK关系困境

时间:2013-12-12 15:59:04

标签: jdo datanucleus

我正在尝试使用DataNucleus JDO获得一个简单的1-N FK关系。我有GridDO和GridColumnDO类以及相关的getter和setter。我正在尝试确定网格有多列。 entity_attribute(GridColumn)表具有到实体(Grid)表的PK(也称为entity_id)的FK列(名为entity_id)。我在DataNucleus网站上使用了the example code。我可以加载GridDO对象,但是当我尝试获取列时,我得到了

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.

有人知道我可能做错了什么吗?我一直在寻找和敲打这一段时间,没有真正的运气。这是package-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>

1 个答案:

答案 0 :(得分:0)

问题在于PersistenceCapable和PrimaryKey既可以通过注释识别,也可以通过元数据识别。我在.orm文件中的注释和PrimaryKey中有PersistenceCapable。