Ich habe drei Einheiten mit JPA/Eclipselink:Eclipse verwendet falsche Tabellennamen in Abfragen für Subklassen wenn Vererbungstyp SingleTable ist
@Entity(name = "Sharing")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class AbstractSharingEntity extends AbstractEntity {
@Entity(name = "InternalSharing")
public class InternalSharingEntity extends AbstractSharingEntity {
@Entity(name = "ExternalSharing")
public class ExternalSharingEntity extends AbstractSharingEntity {
Wenn ich eine typisierte Abfrage für AbstractSharingEntity (“... von der gemeinsamen Nutzung erstellen .. . ") Erstellt EclipseLink die korrekte Abfrage unter Verwendung des angegebenen Entitätsnamens.
Wenn ich jedoch eine typisierte Abfrage für eine der beiden Unterklassen (z. B. "FROM InternalSharing ...") erstelle, erstellt EclipseLink eine falsche Abfrage mit dem Klassennamen als Tabellenname anstelle des Entitätsnamens. Dies führt zu dem folgenden Fehler:
java.sql.SQLSyntaxErrorException: Table 'db.ABSTRACTSHARINGENTITY' doesn't exist
Habe ich einen Fehler gemacht und dies ist das erwartete Verhalten? Wie kann ich gültige Abfragen für die Unterklassen erstellen, ohne die Klassennamen zu ändern/verschiedene Entitätsnamen zu entfernen?
Schalten Sie die Protokollierung sein und sehen, was Eclipse sagt, wenn es Ihre Ausdauer Einheit verarbeitet. – Chris