After replacing 1.2.1 with 1.2.2 and turning on the metadata preload, I
got a nonsensical "column that is not compatible" error. I then tried
removing the preload setting, and it's fine. I set it back, and it
failed again, so it's repeatable.
The relevant part of the stack trace is this (some pieces obscured):
Caused by: <openjpa-1.2.2-r422266:898935 fatal user error>
org.apache.openjpa.persistence.ArgumentException:
"...domain.pricelist.PriceListFolder.childItems<element:class
...domain.pricelist.PriceList>" declares a column that is not compatible
with the expected type "blob". Column details:
Full Name: PRICE_LIST.PRICE_LIST_ID
Type: varchar
Size: 255
Default: null
Not Null: false
The orm.xml excerpts:
<entity name="PriceListFolder"
class="...domain.pricelist.PriceListFolder">
<table name="GEN_FOL_PL"/>
<secondary-table name="PLFOL_CHLD">
<primary-key-join-column name="PLFOL_ID"
referenced-column-name="FOLDER_ID"/>
</secondary-table>
<inheritance strategy="SINGLE_TABLE"/>
<discriminator-value>3001</discriminator-value>
<discriminator-column name="TYPE" discriminator-type="INTEGER"/>
<attributes>
<one-to-many name="childItems" target-entity="PriceList">
<join-column name="PRICE_LIST_ID"
referenced-column-name="PRICE_LIST_ID"/>
</one-to-many>
</attributes>
</entity>
<entity name="PriceList" class="...domain.pricelist.PriceList">
<table name="PRICE_LIST"/>
<secondary-table name="ONLINE_PRICE_LIST">
<primary-key-join-column name="PRICE_LIST_ID"
referenced-column-name="PRICE_LIST_ID"/>
</secondary-table>
<attributes>
<id name="id">
<column name="PRICE_LIST_ID"/>
</id>
<basic name="displayName">
<column name="DISPLAY_NAME"/>
</basic>
<basic name="description">
<column name="DESCRIPTION"/>
</basic>
<basic name="startDate">
<column name="START_DATE"/>
</basic>
<basic name="endDate">
<column name="END_DATE"/>
</basic>
<one-to-many name="includedFlags"
target-entity="com.att.ecom.dynamiccontent.domain.catalog.Flag">
<join-table name="ONLINE_PRICE_LIST_FLAGS">
<join-column name="PRICE_LIST_ID"
referenced-column-name="PRICE_LIST_ID"/>
<inverse-join-column name="FLAG_ID"
referenced-column-name="ID"/>
</join-table>
</one-to-many>
<one-to-one name="basePriceList" target-entity="PriceList">
<join-column name="BASE_PRICE_LIST"
referenced-column-name="PRICE_LIST_ID"/>
</one-to-one>
</attributes>
</entity>
Notice that there is no "lob" anywhere. The column it's complaining
about is an ordinary column reference.