Hi Leute, lang ist's her, doch nun hab ich wieder ein schwer googlebares Problem entdeckt^^
Ich möchte ein modulares System bauen, in dem der Nutzer beliebige Komponenten "installieren" kann. Es werden auch künftig weitere installierbare hinzukommen, sonst würde ich die ganze Sache einfach statischer machen.
Der Code sieht in etwa so aus :
In "myComponents" sollen die Komponenten "installiert" werden.
So sieht eine Komponente aus, sie ist abstrakt weil sie nur zur Generalisierung dient und nicht viel kann^^
DAS Ding ist mein eigentliches Ziel. Ich möchte "AComponent" in die ArrayListe vom User packen. Das ist ja Java-technisch kein Problem. Aber JPA findet schon den Versuch nicht sehr schön und meckert.
(Es würde auch meckern wenn ich "@MappedSuperclass" wegließe, weil er im Array natürlich MyComponents erwartet)
Also wie kann ich dieses Problem lösen? Geht das überhaupt, dass man eine generische Collection mit spezialisierten Objekten füllt???
Wie gesagt, anders wär's ja viel einfacher, aber würde ich jede neue Komponente als neues Member implementieren, würde die Tabelle von User ständig verändert und das ist echt schlecht im Fall, dass die Anwendung schon läuft und Leute registriert sind^^
Ich hoffe Ihr könnt mir helfen
Ich möchte ein modulares System bauen, in dem der Nutzer beliebige Komponenten "installieren" kann. Es werden auch künftig weitere installierbare hinzukommen, sonst würde ich die ganze Sache einfach statischer machen.
Der Code sieht in etwa so aus :
Java:
@Entity(name="AUser")
public class User implements Serializable
{
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@Column(nullable=true)
private ArrayList<MyComponent> myComponents;
...
}
Java:
@MappedSuperclass
public abstract class MyComponent implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
...
}
Java:
@Entity
public class AComponent extends MyComponent
{
...
}
(Es würde auch meckern wenn ich "@MappedSuperclass" wegließe, weil er im Array natürlich MyComponents erwartet)
Also wie kann ich dieses Problem lösen? Geht das überhaupt, dass man eine generische Collection mit spezialisierten Objekten füllt???
Wie gesagt, anders wär's ja viel einfacher, aber würde ich jede neue Komponente als neues Member implementieren, würde die Tabelle von User ständig verändert und das ist echt schlecht im Fall, dass die Anwendung schon läuft und Leute registriert sind^^
Ich hoffe Ihr könnt mir helfen