Hallo,
ich hab folgendes Problem:
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "group", discriminatorType = DiscriminatorType.STRING)
class Person {
String name;
...
Group group; //enum
}
@Entity
@DiscriminatorValue(value="FRIEND")
class Friend extends Person {
Location location; //enum
}
Wenn ich nun weitere Unterteilung von Friend machen will, basiert auf die enum locatiion, damit diese dann in die gleiche Tabelle reinkommt, was soll ich da alles machen? Folgends habe ich probiert, leider ohne Erfolg:
1. Einfach ohne zusätzliche Annotation
class SchoolFriend extends Friend {
}
dann hab ich Exception bekommen, die besagt, dass das enum GROUP SchoolFriend nicht exisitiert
2. Verwende die gleiche Value wie die parent-Klasse
@Entity
@DiscriminatorValue(value="FRIEND")
class SchoolFriend extends Friend {
}
aber wenn ich versuche ein SchoolFriend zu kriegen ->
entityManager.find(SchoolFriend.class, 1l)
bekomme ich immer eine null obwohl ein Objekt vom Typ SchoolFriend vorher persistiert wurde.
höchstens kann ich nur folgendes aufrufen
entityManager.find(Friend.class, 1l)
diese kann ich aber auch nicht zu SchoolFriend casten
3. ich versuche mehrere DiscriminatorColumn verwenden:
@Entity
@DiscriminatorValue(value="FRIEND")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "location", discriminatorType = DiscriminatorType.STRING)
class Friend extends Person {
Location location; //enum
}
@Entity
@DiscriminatorValue(value="SCHOOL_FRIEND")
class SchoolFriend extends Friend {
}
--dies funktioniert auch leider nicht, bekomme die Exception, dass kein Enum GROUP SCHOOL_FRIEND exisitiert
bin für jede Hinweise sehr dankbar
Gruß
ich hab folgendes Problem:
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "group", discriminatorType = DiscriminatorType.STRING)
class Person {
String name;
...
Group group; //enum
}
@Entity
@DiscriminatorValue(value="FRIEND")
class Friend extends Person {
Location location; //enum
}
Wenn ich nun weitere Unterteilung von Friend machen will, basiert auf die enum locatiion, damit diese dann in die gleiche Tabelle reinkommt, was soll ich da alles machen? Folgends habe ich probiert, leider ohne Erfolg:
1. Einfach ohne zusätzliche Annotation
class SchoolFriend extends Friend {
}
dann hab ich Exception bekommen, die besagt, dass das enum GROUP SchoolFriend nicht exisitiert
2. Verwende die gleiche Value wie die parent-Klasse
@Entity
@DiscriminatorValue(value="FRIEND")
class SchoolFriend extends Friend {
}
aber wenn ich versuche ein SchoolFriend zu kriegen ->
entityManager.find(SchoolFriend.class, 1l)
bekomme ich immer eine null obwohl ein Objekt vom Typ SchoolFriend vorher persistiert wurde.
höchstens kann ich nur folgendes aufrufen
entityManager.find(Friend.class, 1l)
diese kann ich aber auch nicht zu SchoolFriend casten
3. ich versuche mehrere DiscriminatorColumn verwenden:
@Entity
@DiscriminatorValue(value="FRIEND")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "location", discriminatorType = DiscriminatorType.STRING)
class Friend extends Person {
Location location; //enum
}
@Entity
@DiscriminatorValue(value="SCHOOL_FRIEND")
class SchoolFriend extends Friend {
}
--dies funktioniert auch leider nicht, bekomme die Exception, dass kein Enum GROUP SCHOOL_FRIEND exisitiert
bin für jede Hinweise sehr dankbar
Gruß
Comment