# Brauche Hilfe beim Mappen von 3 Tabellen a 1:n mit hbm.xml.



## Harry05 (25. Sep 2017)

Hi, läute,
ich brauch mal eure Hilfe da ich alle Konstellationen durch habe hier mein Exception

```
Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: java.lang.RuntimeException: Exception in Application start method
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155(LauncherImpl.java:182)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ExceptionInInitializerError
    at de.AlbenloginSystem.databaseConnaction.HibernateUtil.buildSessionFactory(HibernateUtil.java:17)
    at de.AlbenloginSystem.databaseConnaction.HibernateUtil.<clinit>(HibernateUtil.java:8)
    at de.AlbenloginSystem.AlbenloginSystemMain.postInit(AlbenloginSystemMain.java:27)
    at com.gluonhq.particle.application.ParticleApplication.start(ParticleApplication.java:113)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
    at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
    ... 1 more
Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister
    at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:123)
    at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:77)
    at org.hibernate.metamodel.internal.MetamodelImpl.initialize(MetamodelImpl.java:128)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:301)
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:452)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:710)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726)
    at de.AlbenloginSystem.databaseConnaction.HibernateUtil.buildSessionFactory(HibernateUtil.java:13)
    ... 12 more
Caused by: org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
    at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:91)
    at org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:116)
    at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:385)
    at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:519)
    at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:124)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:96)
    ... 19 more
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:88)
    ... 28 more
Caused by: org.hibernate.PropertyNotFoundException: Could not locate getter method for property [de.AlbenloginSystem.model.bean.TracksBean#ALBUM_T]
    at org.hibernate.internal.util.ReflectHelper.findGetterMethod(ReflectHelper.java:418)
    at org.hibernate.property.access.internal.PropertyAccessBasicImpl.<init>(PropertyAccessBasicImpl.java:41)
    at org.hibernate.property.access.internal.PropertyAccessStrategyBasicImpl.buildPropertyAccess(PropertyAccessStrategyBasicImpl.java:27)
    at org.hibernate.mapping.Property.getGetter(Property.java:308)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertyGetter(PojoEntityTuplizer.java:254)
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:151)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:58)
    ... 33 more

Process finished with exit code 1
```

meine Tabellen sind als .png hochgeladen
das ist der jetzige stand

```
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="de.AlbenloginSystem.model.bean.ProfilBean" table="PROFILE_T">
        <id name="idProfile_t" column="IDPROFILE_T" type="integer">
            <generator class="native"/>
        </id>
        <property name="benutzer" column="BENUTZER" type="string" not-null="true"/>
        <property name="password" column="PASSWORD" type="string"/>

        <set name="album_t" cascade="all" lazy="true">
            <key column="PROFILE_T_IDPROFILE"/>
            <one-to-many class="de.AlbenloginSystem.model.bean.AlbumsBean"/>
        </set>

    </class>
</hibernate-mapping>
```


```
public class ProfilBean {
    private int idProfile_t ;
    private String benutzer;
    private String password;

    private Set Albums = new HashSet();

    public ProfilBean(){

    }

    public ProfilBean(int idProfile_t, String benutzer, String password) {
        this.idProfile_t = idProfile_t;
        this.benutzer = benutzer;
        this.password = password;
    }

    public int getIdProfile_t() {
        return idProfile_t;
    }

    public void setIdProfile_t(int idProfile_t) {
        this.idProfile_t = idProfile_t;
    }

    public String getBenutzer() {
        return benutzer;
    }

    public void setBenutzer(String benutzer) {
        this.benutzer = benutzer;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Set getAlbums() {
        return Albums;
    }

    public void setAlbums(Set albums) {
        Albums = albums;
    }
}
```


```
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="de.AlbenloginSystem.model.bean.AlbumsBean" table="ALBUM_T">
        <id name="idAlbum_t" column="IDALBUM_T" type="integer">
            <generator class="native"/>
        </id>
        <property name="name"  column="NAME"  type="string" not-null="true"/>
        <property name="bandName"  column="BANDNAME"  type="string" not-null="true"/>
        <property name="erscheinungsJahr"  column="ERSCHEINUNGSJAHR"  type="string" not-null="true"/>

        <many-to-one name="profile_t" column="IDPROFILE_T" class="de.AlbenloginSystem.model.bean.ProfilBean"/>

        <set name="idTracks_t" cascade="all" lazy="true">
            <key column="IDALBUM_T"/>
            <one-to-many class="de.AlbenloginSystem.model.bean.TracksBean"/>
        </set>
    </class>
</hibernate-mapping>
```


```
public class AlbumsBean {

    private int idAlbum_t;
    private String name;
    private String bandName;
    private String erscheinungsJahr;

    private Set ProfilBean = new HashSet();
    private Set TracksBean = new HashSet();

    public AlbumsBean() {
    }

    public AlbumsBean(int idAlbum_t, String name, String bandName, String erscheinungsJahr, Set profilBean, Set tracksBean) {
        this.idAlbum_t = idAlbum_t;
        this.name = name;
        this.bandName = bandName;
        this.erscheinungsJahr = erscheinungsJahr;
        ProfilBean = profilBean;
        TracksBean = tracksBean;
    }

    public int getIdAlbum_t() {
        return idAlbum_t;
    }

    public void setIdAlbum_t(int idAlbum_t) {
        this.idAlbum_t = idAlbum_t;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getBandName() {
        return bandName;
    }

    public void setBandName(String bandName) {
        this.bandName = bandName;
    }

    public String getErscheinungsJahr() {
        return erscheinungsJahr;
    }

    public void setErscheinungsJahr(String erscheinungsJahr) {
        this.erscheinungsJahr = erscheinungsJahr;
    }

    public Set getProfilBean() {
        return ProfilBean;
    }

    public void setProfilBean(Set profilBean) {
        ProfilBean = profilBean;
    }

    public Set getTracksBean() {
        return TracksBean;
    }

    public void setTracksBean(Set tracksBean) {
        TracksBean = tracksBean;
    }
}
```


```
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="de.AlbenloginSystem.model.bean.TracksBean" table="Tracks_T">
        <id name="idTracks_t" column="IDTRACKS" type="integer">
            <generator class="native"/>
        </id>
        <property name="titel"  column="TITEL"  type="string" not-null="true"/>
        <property name="dauer"  column="DAUER"  type="string" not-null="true"/>
        <property name="live"  column="LIVE"  type="java.lang.Boolean" not-null="true"/>
        <property name="musikerAnzahl"  column="MUSIKERANZAHL"  type="integer" not-null="true"/>
        <many-to-one name="ALBUM_T" column="ALBUM_T_IDALBUM_T" class="de.AlbenloginSystem.model.bean.AlbumsBean"/>
    </class>
</hibernate-mapping>
```


```
public class TracksBean {

    private int idTracks_t;
    private String titel;
    private String dauer;
    private boolean live;
    private int musikerAnzahl;

    public TracksBean() {
    }
     
public TracksBean(int idTracks_t, String titel, String dauer, boolean live, int musikerAnzahl) {
    this.idTracks_t = idTracks_t;
    this.titel = titel;
    this.dauer = dauer;
    this.live = live;
    this.musikerAnzahl = musikerAnzahl;
}
    public int getIdTracks_t() {
        return idTracks_t;
    }

    public void setIdTracks_t(int idTracks_t) {
        this.idTracks_t = idTracks_t;
    }

    public String getTitel() {
        return titel;
    }

    public void setTitel(String titel) {
        this.titel = titel;
    }

    public String getDauer() {
        return dauer;
    }

    public void setDauer(String dauer) {
        this.dauer = dauer;
    }

    public boolean isLive() {
        return live;
    }

    public void setLive(boolean live) {
        this.live = live;
    }

    public int getMusikerAnzahl() {
        return musikerAnzahl;
    }

    public void setMusikerAnzahl(int musikerAnzahl) {
        this.musikerAnzahl = musikerAnzahl;
    }
}
```

habe die hbm.xml ohne <many -to-one> blabla getestet und läuft normal mit <many -to-one> blabla dann nicht mähr
danke für die Hilfe im voraus.


----------



## mrBrown (26. Sep 2017)

Warum nutzt du xml-Mappings statt der Annotations?

Deine Klassen entsprechen nicht dem im Mapping angegebenen  Die in den <*-to-*> angegebenen properties fehlen in deinen Klassen.
Außerdem solltest du deine Klassen noch mal mit deinem ER-Model abgleichen


----------



## Harry05 (26. Sep 2017)

mrBrown hat gesagt.:


> Warum nutzt du xml-Mappings statt der Annotations?


@mrBrown kann es sein das xml-Mappings veraltet ist zu Annotations??



mrBrown hat gesagt.:


> Deine Klassen entsprechen nicht dem im Mapping angegebenen  Die in den <*-to-*> angegebenen properties fehlen in deinen Klassen.


verstehe ich nicht was du da meinst



mrBrown hat gesagt.:


> Außerdem solltest du deine Klassen noch mal mit deinem ER-Model abgleichen


was habe ich dort vergessen oder was stimmt da nicht??


----------



## mrBrown (26. Sep 2017)

Harry05 hat gesagt.:


> @mrBrown kann es sein das xml-Mappings veraltet ist zu Annotations??


Zumindest sind Annotations der neuere (und mMn deutlich bequemere) Weg.



Harry05 hat gesagt.:


> verstehe ich nicht was du da meinst


Für TracksBean gibst du das an:

```
<many-to-one name="ALBUM_T" column="ALBUM_T_IDALBUM_T" class="de.AlbenloginSystem.model.bean.AlbumsBean"/>
```

In TracksBean gibts `ALBUM_T` nicht - was auch so in der Fehlermeldung steht.




Harry05 hat gesagt.:


> was habe ich dort vergessen oder was stimmt da nicht??


Profil hat ein Set von Alben und Alben ein Set von Profilen, was many-to-many wäre.
In Model und Mapping gibst du es aber als one-to-many an.


BTW solltest du besser Generics nutzen.


----------



## Harry05 (26. Sep 2017)

@mrBrown


mrBrown hat gesagt.:


> Zumindest sind Annotations der neuere (und mMn deutlich bequemere) Weg.


ich bin verwirrt eine erste Annotation  ist doch über dem Klassen Namen
@Entity(name="Klassen Name") und kommt vom Hibernate diese wird durch die IDE durchgestrichen.



mrBrown hat gesagt.:


> Profil hat ein Set von Alben und Alben ein Set von Profilen, was many-to-many wäre.
> In Model und Mapping gibst du es aber als one-to-many an.


ich habe nur one-to-many vom Anfang bis ende also muss beim Profil das

```
private Set Albums = new HashSet();
```


----------



## mrBrown (26. Sep 2017)

Harry05 hat gesagt.:


> diese wird durch die IDE durchgestrichen


...und dabei steht auch sicher der Grund dafür...



Harry05 hat gesagt.:


> ich habe nur one-to-many vom Anfang bis ende also muss beim Profil das


Keine Ahnung was du grad meinst, aber beim Profil ist das auch passend (auch wenn es `private Set<AlbumsBean> albums = new HashSet<>();` sein solle - informiert doch bitte über Konventionen und Generics).

Album sollte aber kein Set von Profilen besitzen.


----------



## Harry05 (26. Sep 2017)

mrBrown hat gesagt.:


> ...und dabei steht auch sicher der Grund dafür...


@mrBrown deprecated kommt von org.hibernate.Anotation


mrBrown hat gesagt.:


> Keine Ahnung was du grad meinst


ich habe keine n:m Beziehungen in den Tabellen sonder 1:n


----------



## mrBrown (26. Sep 2017)

Harry05 hat gesagt.:


> @mrBrown deprecated kommt von org.hibernate.Anotation


Du solltest dafür die Annotations aus `javax.persistence` nutzen



Harry05 hat gesagt.:


> ich habe keine n:m Beziehungen in den Tabellen sonder 1:n


Richtig - aber eben nicht in deinen Klassen.

Album hat ein Set von Profilen - Album->Profil ist also n.
Profil hat ein Set von Alben - Profil->Album ist also n.
Ergibt n:n.


----------



## Harry05 (26. Sep 2017)

@mrBrown


mrBrown hat gesagt.:


> Du solltest dafür die Annotations aus javax.persistence nutzen


gib es da eine Seite zu?? also keine hbm.xml nutzen. kann ich die cfg.xml dynamisch lesen und beschreiben so neben bei als leckerly??



mrBrown hat gesagt.:


> Album hat ein Set von Profilen - Album->Profil ist also n.
> Profil hat ein Set von Alben - Profil->Album ist also n.
> Ergibt n:n.


also was muss wo weg??


----------



## mrBrown (26. Sep 2017)

Harry05 hat gesagt.:


> gib es da eine Seite zu??


Erster google-Treffer: https://www.tutorialspoint.com/hibernate/hibernate_annotations.htm 



Harry05 hat gesagt.:


> also was muss wo weg??


Wer soll denn wovon wie viele Kennen?
Soll Album mehrere Profile haben oder nur eins?
Soll Profil mehrere Alben haben oder nur eins?


----------



## Harry05 (26. Sep 2017)

@mrBrown


mrBrown hat gesagt.:


> Erster google-Treffer: https://www.tutorialspoint.com/hibernate/hibernate_annotations.htm


ja googeln kann ich nur wenn man keine Ahnung von der Materie hat dann ist schwer was auf dem neustem stand zu finden.



mrBrown hat gesagt.:


> Wer soll denn wovon wie viele Kennen?
> Soll Album mehrere Profile haben oder nur eins?
> Soll Profil mehrere Alben haben oder nur eins?


Was sagt den das Bild was ich hochgeladen habe aus ?? Ein Profil hat viele Alben, so wie ein Album hat viele Tracks
oder sind des jetzt Profil n:M Alben, da man viele Profile(harry05, musterman) haben kann aber nein die Profile sind individuell. also 1:n oder habe ich jetzt das Prinzip der Relationale Datenbank nicht verstanden??


----------



## Harry05 (26. Sep 2017)

@mrBrown ich habe das tut mal durchgeblättert und habe die hbm.xml noch gefunden. ich brauche mal eine Aussage Annotation oder hbm.xml und warum.

gibt es eine Möglichkeit cfg.xml zu bearbeiten lesen/schreiben?


----------



## mrBrown (26. Sep 2017)

Harry05 hat gesagt.:


> Was sagt den das Bild was ich hochgeladen habe aus ?? Ein Profil hat viele Alben, so wie ein Album hat viele Tracks
> oder sind des jetzt Profil n:M Alben, da man viele Profile(harry05, musterman) haben kann aber nein die Profile sind individuell. also 1:n oder habe ich jetzt das Prinzip der Relationale Datenbank nicht verstanden??


Ignorierst du eigentlich, was ich schriebe? Es geht um deine *KLASSEN*, nicht um dein ER-Modell, das passt.


----------



## Harry05 (26. Sep 2017)

@mrBrown ja man muss dir ja auch alles aus den Rippen leiern, ich weiß es nicht ist das Irgend eine Informatiker Krankheit ?? komm ich heute nicht komme ich morgen oder was?? ich habe auch ein Informatiker Cousin er ist genauso, oder ist das irgend eine Arbeits Erhaltungsmaßnahme?? gib so wenig Infos raus bis er keine Lust hat nachzufragen damit ich mein wissen und Arbeitsplatz erhalten kann??


----------



## mrBrown (26. Sep 2017)

Harry05 hat gesagt.:


> ist das Irgend eine Informatiker Krankheit


Nein, das ist die anderen-bei-Informatik-helfen-Krankheit 



Harry05 hat gesagt.:


> gib so wenig Infos raus bis er keine Lust hat nachzufragen damit ich mein wissen und Arbeitsplatz erhalten kann


Nein - gib genug Infos raus, damit der andere, wenn er denn will, das Problem selbst lösen kann.

Hier: erster Hinweis auf dein Problem:


mrBrown hat gesagt.:


> Außerdem solltest du deine Klassen noch mal mit deinem ER-Model abgleichen


Noch deutlicherer Hinweis auf dein Problem:


mrBrown hat gesagt.:


> Profil hat ein Set von Alben und Alben ein Set von Profilen, was many-to-many wäre.
> In Model und Mapping gibst du es aber als one-to-many an.


Noch ein ziemlich deutlicher Hinweis:


mrBrown hat gesagt.:


> Album sollte aber kein Set von Profilen besitzen.


Erklärung warum das ein Problem ist, und warum das deinem ER-Model wiederspricht:


mrBrown hat gesagt.:


> Richtig - aber eben nicht in deinen Klassen.
> 
> Album hat ein Set von Profilen - Album->Profil ist also n.
> Profil hat ein Set von Alben - Profil->Album ist also n.
> Ergibt n:n.


Und noch ein Versuch, dich in die richtige Richtung zu lenken:


mrBrown hat gesagt.:


> Wer soll denn wovon wie viele Kennen?
> Soll Album mehrere Profile haben oder nur eins?
> Soll Profil mehrere Alben haben oder nur eins?


Die Fragen konntest du aber offensichtlich nicht beantworten.


Wenn du eine fertige Lösung willst und dir Hinweise nicht reichen: Ich kann dir gerne meinen Stundensatz nennen, und dann bekommst du deine fertige Lösung


----------



## Harry05 (26. Sep 2017)

@mrBrown ich Versuchs jetzt noch mal diesmal ohne den doofen hbm.xml mit keiner <Set> im Profil Klasse und lade es noch mal hoch.

und was ist mit der cfg.xml Datei kann man sie wie ein application.properties mit getter/Setter beschreiben??


----------



## mrBrown (26. Sep 2017)

Harry05 hat gesagt.:


> @mrBrown ich Versuchs jetzt noch mal diesmal ohne den doofen hbm.xml mit keiner <Set> im Profil Klasse und lade es noch mal hoch.



schon mal gesagt: Die Profil-Klasse ist richtig.



Harry05 hat gesagt.:


> und was ist mit der cfg.xml Datei kann man sie wie ein application.properties mit getter/Setter beschreiben??


Nein.
Keine Ahnung, wie du jetzt auf application.properties kommst, aber die im Normalfall auch nicht - solange sie zum Projekt gehört und keine externe Config ist.


----------



## Harry05 (26. Sep 2017)

@mrBrown


mrBrown hat gesagt.:


> schon mal gesagt: Die Profil-Klasse ist richtig.


ich lade es mal Trotzdem neu hoch und ohne hbm.xml den das ist ALT.



mrBrown hat gesagt.:


> Nein.
> Keine Ahnung, wie du jetzt auf application.properties kommst, aber die im Normalfall auch nicht - solange sie zum Projekt gehört und keine externe Config ist.


ich meine das ich die cfg.xml dynamisch konfigurieren will zum Beispiel den User, das Password die Url.

```
Configuration configuration = new Configuration().configure();


        configuration.setProperty("hibernate.connection.username", "meineDbName");
```


```
INFO: HHH000206: hibernate.properties not found
```

das funkt nicht


----------



## Harry05 (26. Sep 2017)

@mrBrown macht das jetzt Sinn ?? habe ich mir von der Seite hergeleitet https://dzone.com/tutorials/java/hi...-mapping-many-to-one-using-annotations-1.html gibt es auch Korrekturen?? 

```
import javax.persistence.*;

@Entity
@Table(name = "profile_t")
public class ProfilBean {
    private int idProfile_t ;
    private String benutzer;
    private String password;


    public ProfilBean( String benutzer, String password) {
        this.benutzer = benutzer;
        this.password = password;
    }
    public ProfilBean(){

    }

    @Id
    @GeneratedValue
    @Column(name = "idProfile_t")
    public int getIdProfile_t() {
        return idProfile_t;
    }

    public void setIdProfile_t(int idProfile_t) {
        this.idProfile_t = idProfile_t;
    }

    @Column(name = "benutzer", length = 45, nullable = true)
    public String getBenutzer() {
        return benutzer;
    }

    public void setBenutzer(String benutzer) {
        this.benutzer = benutzer;
    }

    @Column(name = "password", length = 45, nullable = true)
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}
```


```
import javax.persistence.*;

@Entity
@Table(name = "album_t")
public class AlbumsBean {


    private int idAlbum_t;
    private String name;
    private String bandName;
    private String erscheinungsJahr;
    private ProfilBean profile_t_idProfile_t;

    public AlbumsBean(String name, String bandName, String erscheinungsJahr, ProfilBean profile_t_idProfile_t) {
        this.name = name;
        this.bandName = bandName;
        this.erscheinungsJahr = erscheinungsJahr;
        this.profile_t_idProfile_t = profile_t_idProfile_t;
    }

    public AlbumsBean() {
    }
    @Id
    @GeneratedValue
    @Column(name = "idAlbum_t")
    public int getIdAlbum_t() {
        return idAlbum_t;
    }

    public void setIdAlbum_t(int idAlbum_t) {
        this.idAlbum_t = idAlbum_t;
    }
    @Column(name = "name", nullable = true, length = 45)
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "bandName", nullable = true, length = 45)
    public String getBandName() {
        return bandName;
    }

    public void setBandName(String bandName) {
        this.bandName = bandName;
    }
    @Column(name = "erscheinungJahr", nullable = true, length = 45)
    public String getErscheinungsJahr() {
        return erscheinungsJahr;
    }

    public void setErscheinungsJahr(String erscheinungsJahr) {
        this.erscheinungsJahr = erscheinungsJahr;
    }

    @ManyToOne(cascade = CascadeType.ALL)
    public ProfilBean getProfile_t_idProfile_t() {
        return profile_t_idProfile_t;
    }

    public void setProfile_t_idProfile_t(ProfilBean profile_t_idProfile_t) {
        this.profile_t_idProfile_t = profile_t_idProfile_t;
    }
}
```


```
import javax.persistence.*;

@Entity
@Table(name = "tracks_t")
public class TracksBean {

    private int idTracks_t;
    private String titel;
    private String dauer;
    private boolean live;
    private int musikerAnzahl;
    private AlbumsBean Album_t_idAlbum_t;

    public TracksBean(String titel, String dauer, boolean live, int musikerAnzahl, AlbumsBean album_t_idAlbum_t) {
        this.titel = titel;
        this.dauer = dauer;
        this.live = live;
        this.musikerAnzahl = musikerAnzahl;
        Album_t_idAlbum_t = album_t_idAlbum_t;
    }

    public TracksBean() {
    }
    @Id
    @GeneratedValue
    @Column(name = "idTracks_t")
    public int getIdTracks_t() {
        return idTracks_t;
    }

    public void setIdTracks_t(int idTracks_t) {
        this.idTracks_t = idTracks_t;
    }
    @Column(name = "titel", nullable = true, length = 45)
    public String getTitel() {
        return titel;
    }

    public void setTitel(String titel) {
        this.titel = titel;
    }
    @Column(name = "dauer", nullable = true, length = 45)
    public String getDauer() {
        return dauer;
    }

    public void setDauer(String dauer) {
        this.dauer = dauer;
    }
    @Column(name = "live", nullable = true)
    public boolean isLive() {
        return live;
    }

    public void setLive(boolean live) {
        this.live = live;
    }
    @Column(name = "musikerAnzahl", nullable = true)
    public int getMusikerAnzahl() {
        return musikerAnzahl;
    }

    public void setMusikerAnzahl(int musikerAnzahl) {
        this.musikerAnzahl = musikerAnzahl;
    }
    @ManyToOne(cascade = CascadeType.ALL)
    public AlbumsBean getAlbum_t_idAlbum_t() {
        return Album_t_idAlbum_t;
    }

    public void setAlbum_t_idAlbum_t(AlbumsBean album_t_idAlbum_t) {
        Album_t_idAlbum_t = album_t_idAlbum_t;
    }
}
```


----------



## mrBrown (26. Sep 2017)

Jetzt hat weder Profil Alben, noch haben Alben Tracks...


----------



## Harry05 (26. Sep 2017)

@mrBrown 


mrBrown hat gesagt.:


> Jetzt hat weder Profil Alben, noch haben Alben Tracks...


man ich habe es doch so gemacht wie auf der Seite https://dzone.com/tutorials/java/hi...-mapping-many-to-one-using-annotations-1.html da ist die Adresse Quasie das Profil und Student das Album oder habe ich was übersehen ??


----------



## Harry05 (26. Sep 2017)

@mrBrown mein stand ist jetzt das ich Profile speichern kann nur das Album nicht mit kommt
wie muss ich es jetzt Abändern beziehungsweise die beans ?? 
nur zum testen 

```
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = null;
try {
    transaction = session.beginTransaction();
    ProfilBean profilBean = new ProfilBean("Harry","test");
    session.save(profilBean);


    AlbumsBean albumsBean = new AlbumsBean("smells like teen spirit","nirvana ","1991", profilBean);
    session.save(albumsBean);
    transaction.commit();
}catch (Exception e){

}finally {
    session.close();
}
```


```
import javax.persistence.*;
@Entity
@Table(name = "Profile_t")
public class ProfilBean {
    private int idProfile_t ;
    private String benutzer;
    private String password;


    public ProfilBean( String benutzer, String password) {
        this.benutzer = benutzer;
        this.password = password;
    }
    public ProfilBean(){

    }

    @Id
    @GeneratedValue
    @Column(name = "idProfile_t")
    public int getIdProfile_t() {
        return idProfile_t;
    }

    public void setIdProfile_t(int idProfile_t) {
        this.idProfile_t = idProfile_t;
    }

    @Column(name = "benutzer", length = 45, nullable = false)
    public String getBenutzer() {
        return benutzer;
    }

    public void setBenutzer(String benutzer) {
        this.benutzer = benutzer;
    }

    @Column(name = "password", length = 45, nullable = true)
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}
```


```
import javax.persistence.*;


@Entity
@Table(name = "Album_t")
public class AlbumsBean {


    private int idAlbum_t;
    private String name;
    private String bandName;
    private String erscheinungsJahr;
    private ProfilBean profile_t_idProfile_t;

    public AlbumsBean(String name, String bandName, String erscheinungsJahr, ProfilBean profile_t_idProfile_t) {
        this.name = name;
        this.bandName = bandName;
        this.erscheinungsJahr = erscheinungsJahr;
        this.profile_t_idProfile_t = profile_t_idProfile_t;
    }

    public AlbumsBean() {
    }
    @Id
    @GeneratedValue
    @Column(name = "idAlbum_t")
    public int getIdAlbum_t() {
        return idAlbum_t;
    }

    public void setIdAlbum_t(int idAlbum_t) {
        this.idAlbum_t = idAlbum_t;
    }
    @Column(name = "name", nullable = true, length = 45)
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "bandName", nullable = true, length = 45)
    public String getBandName() {
        return bandName;
    }

    public void setBandName(String bandName) {
        this.bandName = bandName;
    }
    @Column(name = "erscheinungJahr", nullable = true, length = 45)
    public String getErscheinungsJahr() {
        return erscheinungsJahr;
    }

    public void setErscheinungsJahr(String erscheinungsJahr) {
        this.erscheinungsJahr = erscheinungsJahr;
    }

    @ManyToOne(cascade = CascadeType.ALL)
    public ProfilBean getProfile_t_idProfile_t() {
        return profile_t_idProfile_t;
    }

    public void setProfile_t_idProfile_t(ProfilBean profile_t_idProfile_t) {
        this.profile_t_idProfile_t = profile_t_idProfile_t;
    }
}
```


```
import javax.persistence.*;

@Entity
@Table(name = "Tracks_t")
public class TracksBean {

    private int idTracks_t;
    private String titel;
    private String dauer;
    private boolean live;
    private int musikerAnzahl;
    private AlbumsBean Album_t_idAlbum_t;

    public TracksBean(String titel, String dauer, boolean live, int musikerAnzahl, AlbumsBean album_t_idAlbum_t) {
        this.titel = titel;
        this.dauer = dauer;
        this.live = live;
        this.musikerAnzahl = musikerAnzahl;
        Album_t_idAlbum_t = album_t_idAlbum_t;
    }

    public TracksBean() {
    }
    @Id
    @GeneratedValue
    @Column(name = "idTracks_t")
    public int getIdTracks_t() {
        return idTracks_t;
    }

    public void setIdTracks_t(int idTracks_t) {
        this.idTracks_t = idTracks_t;
    }
    @Column(name = "titel", nullable = true, length = 45)
    public String getTitel() {
        return titel;
    }

    public void setTitel(String titel) {
        this.titel = titel;
    }
    @Column(name = "dauer", nullable = true, length = 45)
    public String getDauer() {
        return dauer;
    }

    public void setDauer(String dauer) {
        this.dauer = dauer;
    }
    @Column(name = "live", nullable = true)
    public boolean isLive() {
        return live;
    }

    public void setLive(boolean live) {
        this.live = live;
    }
    @Column(name = "musikerAnzahl", nullable = true)
    public int getMusikerAnzahl() {
        return musikerAnzahl;
    }

    public void setMusikerAnzahl(int musikerAnzahl) {
        this.musikerAnzahl = musikerAnzahl;
    }
    @ManyToOne(cascade = CascadeType.ALL)
    public AlbumsBean getAlbum_t_idAlbum_t() {
        return Album_t_idAlbum_t;
    }

    public void setAlbum_t_idAlbum_t(AlbumsBean album_t_idAlbum_t) {
        Album_t_idAlbum_t = album_t_idAlbum_t;
    }
}
```


----------



## mrBrown (26. Sep 2017)

Es wäre ratsam, den catch-Block nicht leer zu lassen - passiert da ein Fehler, merkst du nichts davon.


----------



## Harry05 (27. Sep 2017)

@mrBrown


mrBrown hat gesagt.:


> Es wäre ratsam, den catch-Block nicht leer zu lassen - passiert da ein Fehler, merkst du nichts davon.


catch-Block gibt das Das aus

```
org.hibernate.exception.SQLGrammarException: could not execute statement
```

und sonst noch das


```
Sep 27, 2017 12:08:20 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 1054, SQLState: 42S22
Sep 27, 2017 12:08:20 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Unknown column 'profile_t_idProfile_t_idProfile_t' in 'field list'
```

wo bei das nach dem column viel zu lang ist. heee


----------



## Harry05 (27. Sep 2017)

@mrBrown


Harry05 hat gesagt.:


> ERROR: Unknown column 'profile_t_idProfile_t_idProfile_t' in 'field list'


hier ruft er irgend wie doppelt die Spalte auf warum auch immer


----------



## Harry05 (27. Sep 2017)

@mrBrown


Harry05 hat gesagt.:


> ERROR: Unknown column 'profile_t_idProfile_t_idProfile_t' in 'field list'


hier ruft er irgend wie doppelt die Spalte auf warum auch immer


----------



## thecain (27. Sep 2017)

Weil deine Getter falsch benannt sind. /e Ah nein... Quatsch.. war wohl noch etwas zu früh.


----------



## Harry05 (27. Sep 2017)

@thecain


thecain hat gesagt.:


> Weil deine Getter falsch benannt sind. /e Ah nein... Quatsch.. war wohl noch etwas zu früh.


Was ist da los ??


----------



## Harry05 (27. Sep 2017)

@mrBrown Was habe ich jetzt falsch gemacht ich habe die Seite https://dzone.com/tutorials/java/hi...-mapping-many-to-one-using-annotations-1.html
als Vorlage genommen und diese mir auf die drei Tabellen abgeleitet. Brauchst du noch was an Informationen


----------



## mrBrown (27. Sep 2017)

Wie schon mal gesagt: Versuch dich bei der Benennung doch an Konventionen zu halten.

Du hast auch immer noch keine Verbindung von Profil zu Alben und von Album zu Track, die hättest du lassen können, wie sie ursprünglich waren.

Es würd btw deutlich übersichtlicher, wenn die Annotations an den Felder, statt den Gettern, sind.


----------



## Harry05 (27. Sep 2017)

@mrBrown 


mrBrown hat gesagt.:


> Wie schon mal gesagt: Versuch dich bei der Benennung doch an Konventionen zu halten.


an was für welcher Konventionen der Datenbank der Java Programmiersprache ?? und ein Link dann bitte.


mrBrown hat gesagt.:


> Du hast auch immer noch keine Verbindung von Profil zu Alben und von Album zu Track, die hättest du lassen können, wie sie ursprünglich waren.



in der Webseite haben die da so was gemacht _STUDENT =N,_ _ADDRESS =1



		Java:In die Zwischenablage kopieren


@Entity
@Table(name = "STUDENT")
public class Student {

    private long studentId;
    private String studentName;
    private Address studentAddress;

    public Student() {
    }

    public Student(String studentName, Address studentAddress) {
        this.studentName = studentName;
        this.studentAddress = studentAddress;
    }

    @Id
    @GeneratedValue
    @Column(name = "STUDENT_ID")
    public long getStudentId() {
        return this.studentId;
    }

    public void setStudentId(long studentId) {
        this.studentId = studentId;
    }

    @Column(name = "STUDENT_NAME", nullable = false, length = 100)
    public String getStudentName() {
        return this.studentName;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    @ManyToOne(cascade = CascadeType.ALL)
    public Address getStudentAddress() {
        return this.studentAddress;
    }

    public void setStudentAddress(Address studentAddress) {
        this.studentAddress = studentAddress;
    }

}




		Java:In die Zwischenablage kopieren


@Entity
@Table(name = "ADDRESS")
public class Address {

    private long addressId;
    private String street;
    private String city;
    private String state;
    private String zipcode;

    public Address() {
    }

    public Address(String street, String city, String state, String zipcode) {
        this.street = street;
        this.city = city;
        this.state = state;
        this.zipcode = zipcode;
    }

    @Id
    @GeneratedValue
    @Column(name = "ADDRESS_ID")
    public long getAddressId() {
        return this.addressId;
    }

    public void setAddressId(long addressId) {
        this.addressId = addressId;
    }
   
    @Column(name = "ADDRESS_STREET", nullable = false, length=250)
    public String getStreet() {
        return this.street;
    }

    public void setStreet(String street) {
        this.street = street;
    }

    @Column(name = "ADDRESS_CITY", nullable = false, length=50)
    public String getCity() {
        return this.city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    @Column(name = "ADDRESS_STATE", nullable = false, length=50)
    public String getState() {
        return this.state;
    }

    public void setState(String state) {
        this.state = state;
    }

    @Column(name = "ADDRESS_ZIPCODE", nullable = false, length=10)
    public String getZipcode() {
        return this.zipcode;
    }

    public void setZipcode(String zipcode) {
        this.zipcode = zipcode;
    }

}

_
_ich habe es meiner Meinung nach richtig interpretiert ?? Die Profil Daten kriege ich noch gespeichert aber nicht mehr Alben_


----------



## mrBrown (27. Sep 2017)

Harry05 hat gesagt.:


> an was für welcher Konventionen der Datenbank der Java Programmiersprache ?? und ein Link dann bitte.


Java, besonders Variablenbenennung. ZB hier https://google.github.io/styleguide/javaguide.html#s5.1-identifier-names
Außerdem sollte ein Name aussagen, was es ist - und z.B. `profile_t_idProfile_t` ist kein sinnvoller Name für eine ProfilBean.



Harry05 hat gesagt.:


> _ich habe es meiner Meinung nach richtig interpretiert ?? Die Profil Daten kriege ich noch gespeichert aber nicht mehr Alben_


Ja, hast du auch. Allerdings ist es in deinem Fall sinnvoller, wenn nicht nur Album das Profil kennt, sondern Profil auch die Alben - wenn du es allerdings nicht brauchst, lass es weg.


----------



## Harry05 (27. Sep 2017)

@mrBrown


mrBrown hat gesagt.:


> Ja, hast du auch. Allerdings ist es in deinem Fall sinnvoller, wenn nicht nur Album das Profil kennt, sondern Profil auch die Alben - wenn du es allerdings nicht brauchst, lass es weg.


ich verstehe dich da nicht und die aussage und den Vorteil.

ich habe jetzt überarbeitet und kriege den gleichen Fehler.
aber lass uns mal erst bei Profil und Alben den Bug fixen

```
Hibernate:
    insert
    into
        Profile_t
        (benutzer, password)
    values
        (?, ?)
Hibernate:
    insert
    into
        Album_t
        (bandName, erscheinungJahr, idProfile_idProfile, name)
    values
        (?, ?, ?, ?)
Sep 27, 2017 3:36:54 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 1054, SQLState: 42S22
Sep 27, 2017 3:36:54 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Unknown column 'idProfile_idProfile' in 'field list'
org.hibernate.exception.SQLGrammarException: could not execute statement
```


```
Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction transaction = null;
        try {
            transaction = session.beginTransaction();
            ProfilBean profilBean = new ProfilBean("Harry05","test");
            session.save(profilBean);

            AlbumsBean albumsBean = new AlbumsBean("smells like teen spirit","nirvana ","1991", profilBean);

            //TracksBean tracksBean = new TracksBean("");
            session.save(albumsBean);
            transaction.commit();
        }catch (Exception e){
            System.out.println(e);
        }finally {
            session.close();
        }
```


```
@Entity
@Table(name = "Profile_t")
public class ProfilBean {


    @Id
    @GeneratedValue
    @Column(name = "idProfile")
    private int idProfile;
    @Column(name = "benutzer", length = 45, nullable = false)
    private String benutzer;

    @Column(name = "password", length = 45, nullable = true)
    private String password;

    public ProfilBean( String benutzer, String password) {
        this.benutzer = benutzer;
        this.password = password;
    }
    public ProfilBean(){

    }

    public int getIdProfile() {
        return idProfile;
    }

    public void setIdProfile(int idProfile) {
        this.idProfile = idProfile;
    }

    public String getBenutzer() {
        return benutzer;
    }

    public void setBenutzer(String benutzer) {
        this.benutzer = benutzer;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}
```


```
@Entity
@Table(name = "Album_t")
public class AlbumsBean {

    @Id
    @GeneratedValue
    @Column(name = "idAlbums")
    private int idAlbums;
    @Column(name = "name", nullable = true, length = 45)
    private String name;
    @Column(name = "bandName", nullable = true, length = 45)
    private String bandName;
    @Column(name = "erscheinungJahr", nullable = true, length = 45)
    private String erscheinungsJahr;
    @ManyToOne(cascade = CascadeType.ALL)
    private ProfilBean idProfile;

    public AlbumsBean(String name, String bandName, String erscheinungsJahr, ProfilBean idProfile) {
        this.name = name;
        this.bandName = bandName;
        this.erscheinungsJahr = erscheinungsJahr;
        this.idProfile = idProfile;
    }

    public AlbumsBean() {
    }

    public int getIdAlbums() {
        return idAlbums;
    }

    public void setIdAlbums(int idAlbums) {
        this.idAlbums = idAlbums;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getBandName() {
        return bandName;
    }

    public void setBandName(String bandName) {
        this.bandName = bandName;
    }

    public String getErscheinungsJahr() {
        return erscheinungsJahr;
    }

    public void setErscheinungsJahr(String erscheinungsJahr) {
        this.erscheinungsJahr = erscheinungsJahr;
    }

    public ProfilBean getIdProfile() {
        return idProfile;
    }

    public void setIdProfile(ProfilBean idProfile) {
        this.idProfile = idProfile;
    }
}
```


```
@Entity
@Table(name = "Tracks_t")
public class TracksBean {

    @Id
    @GeneratedValue
    @Column(name = "idTracks")
    private int idTracks;
    @Column(name = "titel", nullable = true, length = 45)
    private String titel;
    @Column(name = "dauer", nullable = true, length = 45)
    private String dauer;
    @Column(name = "live", nullable = true)
    private boolean live;
    @Column(name = "musikerAnzahl", nullable = true)
    private int musikerAnzahl;
    @ManyToOne(cascade = CascadeType.ALL)
    private AlbumsBean idAlbums;

    public TracksBean(String titel, String dauer, boolean live, int musikerAnzahl, AlbumsBean idAlbums) {
        this.titel = titel;
        this.dauer = dauer;
        this.live = live;
        this.musikerAnzahl = musikerAnzahl;
        this.idAlbums = idAlbums;
    }

    public TracksBean() {
    }

    public int getIdTracks() {
        return idTracks;
    }

    public void setIdTracks(int idTracks) {
        this.idTracks = idTracks;
    }

    public String getTitel() {
        return titel;
    }

    public void setTitel(String titel) {
        this.titel = titel;
    }

    public String getDauer() {
        return dauer;
    }

    public void setDauer(String dauer) {
        this.dauer = dauer;
    }

    public boolean isLive() {
        return live;
    }

    public void setLive(boolean live) {
        this.live = live;
    }

    public int getMusikerAnzahl() {
        return musikerAnzahl;
    }

    public void setMusikerAnzahl(int musikerAnzahl) {
        this.musikerAnzahl = musikerAnzahl;
    }

    public AlbumsBean getIdAlbums() {
        return idAlbums;
    }

    public void setIdAlbums(AlbumsBean idAlbums) {
        this.idAlbums = idAlbums;
    }
}
```


----------



## mrBrown (27. Sep 2017)

Nimmt zwar den ganzen Spaß, aber...

Der Fremdschlüssel aus Album für Profil, den Hibernate generiert, setzt sich zusammen aus dem Profil-Feld in Album (`idProfile`) und dem id-Feld in Profil (`idProfile`) - die werden mit Unterstrich zusammen gehängt, was `idProfile_idProfile` ergibt.

Hält man sich an die üblichen Konventionen, hießen die beiden Felder `profil` und `id`, zusammen ergäbe das `profil_id`.
Nimmt man gleichzeitig das übliche Benennungsschma der Datenbank, hieße der Fremdschlüssel da auch `profil_id`, und voila, es passt.


Nutz man wie du nicht die übliche Benennung, sondern eine davon abweichende, muss man die Spaltennamen explizit setzten.
Das klappt in dem Fall mit `@JoinColumn`. Dort kannst du den Namen der Spalte setzten, in deinem Fall `@JoinColumn(name = "idProfile"`.


----------



## Harry05 (27. Sep 2017)

@mrBrown


mrBrown hat gesagt.:


> Nimmt man gleichzeitig das übliche Benennungsschma der Datenbank, hieße der Fremdschlüssel da auch profil_id, und voila, es passt.


Also nicht ganz ich arbeite mit Workbunch mach ich eine Tabelle z.B Album_t macht er eine idAlbum_t spalte und verbinde ich diese eins zu m macht er eine Album_t_idAlbum_t spalte

aber jetzt funkt das und ich habe was auf jeden Fall gelernt



mrBrown hat gesagt.:


> Ja, hast du auch. Allerdings ist es in deinem Fall sinnvoller, wenn nicht nur Album das Profil kennt, sondern Profil auch die Alben - wenn du es allerdings nicht brauchst, lass es weg.


 was meinst du damit genau eigentlich


gib's noch was zum Code auszusetzen

```
@Entity
@Table(name = "Profile_t")
public class ProfilBean {


    @Id
    @GeneratedValue
    @Column(name = "id")
    private int id;
    @Column(name = "benutzer", length = 45, nullable = false)
    private String benutzer;

    @Column(name = "password", length = 45, nullable = true)
    private String password;

    public ProfilBean( String benutzer, String password) {
        this.benutzer = benutzer;
        this.password = password;
    }
    public ProfilBean(){

    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getBenutzer() {
        return benutzer;
    }

    public void setBenutzer(String benutzer) {
        this.benutzer = benutzer;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}
```


```
@Entity
@Table(name = "Album_t")
public class AlbumsBean {

    @Id
    @GeneratedValue
    @Column(name = "id")
    private int id;
    @Column(name = "name", nullable = true, length = 45)
    private String name;
    @Column(name = "bandName", nullable = true, length = 45)
    private String bandName;
    @Column(name = "erscheinungJahr", nullable = true, length = 45)
    private String erscheinungsJahr;
    @ManyToOne(cascade = CascadeType.ALL)
    private ProfilBean profil;

    public AlbumsBean(String name, String bandName, String erscheinungsJahr, ProfilBean profil) {
        this.name = name;
        this.bandName = bandName;
        this.erscheinungsJahr = erscheinungsJahr;
        this.profil = profil;
    }

    public AlbumsBean() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getBandName() {
        return bandName;
    }

    public void setBandName(String bandName) {
        this.bandName = bandName;
    }

    public String getErscheinungsJahr() {
        return erscheinungsJahr;
    }

    public void setErscheinungsJahr(String erscheinungsJahr) {
        this.erscheinungsJahr = erscheinungsJahr;
    }

    public ProfilBean getProfil() {
        return profil;
    }

    public void setProfil(ProfilBean profil) {
        this.profil = profil;
    }
}
```


```
@Entity
@Table(name = "Tracks_t")
public class TracksBean {

    @Id
    @GeneratedValue
    @Column(name = "id")
    private int id;
    @Column(name = "titel", nullable = true, length = 45)
    private String titel;
    @Column(name = "dauer", nullable = true, length = 45)
    private String dauer;
    @Column(name = "live", nullable = true)
    private boolean live;
    @Column(name = "musikerAnzahl", nullable = true)
    private int musikerAnzahl;
    @ManyToOne(cascade = CascadeType.ALL)
    private AlbumsBean album;

    public TracksBean(String titel, String dauer, boolean live, int musikerAnzahl, AlbumsBean album) {
        this.titel = titel;
        this.dauer = dauer;
        this.live = live;
        this.musikerAnzahl = musikerAnzahl;
        this.album = album;
    }

    public TracksBean() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitel() {
        return titel;
    }

    public void setTitel(String titel) {
        this.titel = titel;
    }

    public String getDauer() {
        return dauer;
    }

    public void setDauer(String dauer) {
        this.dauer = dauer;
    }

    public boolean isLive() {
        return live;
    }

    public void setLive(boolean live) {
        this.live = live;
    }

    public int getMusikerAnzahl() {
        return musikerAnzahl;
    }

    public void setMusikerAnzahl(int musikerAnzahl) {
        this.musikerAnzahl = musikerAnzahl;
    }

    public AlbumsBean getAlbum() {
        return album;
    }

    public void setAlbum(AlbumsBean album) {
        this.album = album;
    }
}
```


----------

