Az OpenJPA és az EclipseLink különböző táblákat hoznak létre a @GeneratedValue
vagy a @GeneratedValue(strategy=GenerationType.AUTO)
annotációval rendelkező attribútumok értékeinek előállításához.
Ha az alkalmazás tartalmaz ilyen, az OpenJPA által előállított
attribútumokkal rendelkező egyedeket, akkor az új egyedek tárolása
az EclipseLink használatával hibát okoz, mert az
EclipseLink az EclipseLink táblából próbálja meg előállítani ezeket
az értékeket.
A probléma megoldásához konfigurálja az egyedet, hogy az OpenJPA szekvencia táblát használja az attribútum értékeinek előállításához. Ha így tesz, akkor az EclipseLink az OpenJPA táblában felsorolt utolsó értéket fogja használni az attribútumérték előállításához.
Ez a szabály megkeresi a @GeneratedValue vagy a
@GeneratedValue(strategy=GenerationType.AUTO) annotációval
ellátott attribútumokat.
Automatizált lesz, ahol a megjelölt helyettesítheti a @GeneratedValue megjegyzést a következő megjegyzésekkel helyettesíti:
@TableGenerator(name = "OPENJPA_SEQUENCE_TABLE", table = "OPENJPA_SEQUENCE_TABLE", pkColumnName = "ID", valueColumnName = "SEQUENCE_VALUE", pkColumnValue = "0") @GeneratedValue(strategy = GenerationType.TABLE, generator = "OPENJPA_SEQUENCE_TABLE")
Például a szabály megjelöli a következő mező hozzáférési egyedosztályban
lévő @GeneratedValue annotációt.
import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity nyilvános osztály GeneratedValueegyed { @Id @GeneratedValue privát int id;}
Az automatikus javítás módosítja a @GeneratedValue megjegyzést, és hozzáadja a @TableGenerator megjegyzést.
import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity nyilvános osztály GeneratedValueegyed { @Id @TableGenerator(név = "OPENJPA_SEQUENCE_TABLE", tábla = "OPENJPA_SEQUENCE_TABLE", pkColumnName = "ID", valueColumnName = "SEQUENCE_VALUE", pkColumnValue = "0") @GeneratedValue(stratégia = GenerationType.TABLE, előállító = "OPENJPA_SEQUENCE_TABLE") privát int id;}
A problémával és más OpenJPA - EclipseLink átállítási problémákkal kapcsolatos információkért tekintse meg az OpenJPA - EclipseLink JPA átállítás: Leképezések útmutatót.