Hallo,
hier meine Java-Beans:
Und hier das dazugehörigen Hibernate-Mappings:
Nun hab ich folgende 2 Probleme:
Aber sobalt ich es folgendermaßen versuche wird der team_fid Fremdschlüssel nicht in die player Tabellen eingetragen.
Aber sobalt ich folgerndermaßen versuche die Daten auszulesen werden die Player nicht mit ausgelesen:
Ich vermute sehr stark, dass diese beiden Probleme zusammenhängen.
Hat jemand ne Ahnung was ich Falsch machen?
Vielleicht in den Hibernate-Mappings?
Gruß e.motion
hier meine Java-Beans:
Code:
class Team
{
private int id;
private List players = new ArrayList();
private String name;
public Team()
{
}
public void setId(int id)
{
this.id = id;
}
public int getId()
{
return id;
}
public List getPlayers()
{
return players;
}
public void setPlayers(List players)
{
this.players = players;
}
public void addPlayer(Player player)
{
players.add(player);
}
public void removePlayer(Player player)
{
players.remove(player);
}
public void clearPlayers()
{
players.clear();
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
}
class Player
{
private int id;
private Team team;
private String name;
public Player()
{
}
public void setId(int id)
{
this.id = id;
}
public int getId()
{
return id;
}
public void setTeam(Team team)
{
this.team = team;
}
public int getTeam()
{
return team;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
}
Und hier das dazugehörigen Hibernate-Mappings:
Code:
<class name="Team" table="team">
<id name="id" type="integer" unsaved-value="null" column="team_id">
<generator class="increment"/>
</id>
<list name="players" lazy="true">
<key column="team_fid"/>
<index column="player_id"/>
<one-to-many class="Player"/>
</list>
<property name="name"/>
</class>
<class name="Player" table="player">
<id name="id" type="integer" unsaved-value="null" column="player_id">
<generator class="increment"/>
</id>
<many-to-one name="team" class="Team" column="team_fid"/>
<property name="name"/>
</class>
Nun hab ich folgende 2 Probleme:
- Wenn ich neue Objekte der Datenbank hinzufüge funktioniert dies folgendermaßen einwandfrei:
Code:
Team team = new Team();
team.setName("Team1");
Player player = new Player();
player.setName("Player1");
player.setTeam(team);
session.save(team);
session.save(player);
Code:
Player player = new Player();
player.setName("Player1");
Team team = new Team();
team.setName("Team1");
team.addPalyer(player);
session.save(team);
session.save(player);
- Wenn ich die Objekte aus der Datenbank lesen möchte funktioniert dies folgendermaßen auch einwandfrei:
Code:
Query query = session.createQuery("select p from Player as p");
for (Iterator it = query.iterate(); it.hasNext();)
{
Player p = (Player)it.next();
System.out.println("Player: " + p.getName());
System.out.println("PacketCaregory: " + p.getTeam().getName());
}
Aber sobalt ich folgerndermaßen versuche die Daten auszulesen werden die Player nicht mit ausgelesen:
Code:
Query query = session.createQuery("select t from Team as t");
for (Iterator it = query.iterate(); it.hasNext();)
{
Team t = (Team)it.next();
System.out.println("Team: " + t.getName());
Hibernate.initialize(t.getPlayers());
for (Iterator it2 = t.getPlayers().iterator(); it2.hasNext();)
{
Player p = (Player)it2.next();
System.out.println("Player: " + p.getName());
}
}
Ich vermute sehr stark, dass diese beiden Probleme zusammenhängen.
Hat jemand ne Ahnung was ich Falsch machen?
Vielleicht in den Hibernate-Mappings?
Gruß e.motion