Ich versuche, ein einfaches EAV-Muster in meiner Web-App mit Java/Spring MVC und Hibernate einzurichten. Ich kann nicht die Magie hinter dem Hibernate-XML-Setup für dieses Szenario herausfinden.Implementieren EAV-Muster mit Ruhezustand für Benutzer -> Einstellungen Beziehung
Meine Datenbanktabelle "SETUP" hat drei Spalten:
- user_id (FK)
- setup_item
- setup_value
Die Datenbank zusammengesetzten Schlüssel aus User_id gemacht | setup_item
Hier ist die Setup.java Klasse:
public class Setup implements CommonFormElements, Serializable {
private Map data = new HashMap();
private String saveAction;
private Integer speciesNamingList;
private User user;
Logger log = LoggerFactory.getLogger(Setup.class);
public String getSaveAction() {
return saveAction;
}
public void setSaveAction(String action) {
this.saveAction = action;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Integer getSpeciesNamingList() {
return speciesNamingList;
}
public void setSpeciesNamingList(Integer speciesNamingList) {
this.speciesNamingList = speciesNamingList;
}
public Map getData() {
return data;
}
public void setData(Map data) {
this.data = data;
}
}
Mein Problem mit dem Hibernate-Setup ist, dass ich nicht herausfinden können, scheinen wie die Tatsache kartieren, dass ein Fremdschlüssel und der Schlüssel einer Karte wird der zusammengesetzte Schlüssel der Tabelle erstellt ... dies liegt an mangelnder Erfahrung mit Hibernate. Hier ist mein erster Versuch in diese an die Arbeit:
<composite-id>
<key-many-to-one foreign-key="id" name="user" column="user_id" class="Business.User">
<meta attribute="use-in-equals">true</meta>
</key-many-to-one>
</composite-id>
<map lazy="false" name="data" table="setup">
<key column="user_id" property-ref="user"/>
<composite-map-key class="Command.Setup">
<key-property name="data" column="setup_item" type="string"/>
</composite-map-key>
<element column="setup_value" not-null="true" type="string"/>
</map>
Einsicht darüber, wie richtig diese gemeinsame Szenario abbilden würden die meisten geschätzt werden!
@Trevor Willkommen, aber wenn Sie eine nützliche Antwort sehen, UPvote, Danke! –