2015-02-19 2 views
2

Эта простая иерархия наследования SINGLE_TABLE как-то терпит неудачу, когда мое приложение пытается получить доступ к наследующему объекту RootFolderNode.Путь поля состояния 'e.id' не может быть разрешен к допустимому типу. Динамический объект в orm.xml,

Объекты определяются как динамические сущности access = "VIRTUAL", без поддержки класса Java. PersistenceUnit загружается без каких-либо жалоб.

Exception Description: Problem compiling 
    [SELECT DISTINCT e FROM RootFolderNode e WHERE e.id = :param1 ]. 
[46, 50] The state field path 'e.id' cannot be resolved to a valid type. 

Соответствующая часть ORM.xml

<entity class="FolderNode" access="VIRTUAL" > 
    <table name="FOLDER_NODE_PREPARE" /> 
    <inheritance strategy="SINGLE_TABLE"/> 
    <discriminator-value>F</discriminator-value> 
    <attributes> 
     <id name="id" attribute-type="Long"> 
      <column name="id" /> 
      <generated-value strategy="SEQUENCE" generator="FOLDER_NODE_SEQ" /> 
      <sequence-generator sequence-name="FOLDER_NODE_SEQ" name="FOLDER_NODE_SEQ" allocation-size="1" /> 
     </id> 
     ... 
    </attributes> 
</entity> 

<entity class="RootFolderNode" parent-class="FolderNode" access="VIRTUAL"> 
    <discriminator-value>R</discriminator-value> 
</entity> 

Что я здесь отсутствует?

Используемые изделия: EclipseLink 2.5.1. JBoss EAP 6.2.

+0

"java.lang.Long"? –

+0

Да, java.lang.Long. Использование только Long работает с другими объектами. Есть идеи? – leo

+0

Можете ли вы предоставить junit-тест? –

ответ

1

Решение: Повторите параметры наследования:

<entity class="RootFolderNode" parent-class="FolderNode" access="VIRTUAL"> 
    <inheritance strategy="SINGLE_TABLE"/> 
    <discriminator-value>R</discriminator-value> 
</entity> 
0

вы должны использовать стратегию наследования, чтобы преодолеть this.please добавить следующую строку в RootFolderNode.

<inheritance strategy="SINGLE_TABLE"/>