我正在尝试使用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>
答案 0 :(得分:0)
问题在于PersistenceCapable和PrimaryKey既可以通过注释识别,也可以通过元数据识别。我在.orm文件中的注释和PrimaryKey中有PersistenceCapable。