Hello
Im a newbie of hibernate I have huge problem solving this I cant figure it out....maybe is it simple but I have googled and searched in tutorials and followed every step but It doesnt work.
I thought that hibernate should do all the work handling objects and store data into corresponding table in DB
Im using Mysql and
What I want to achive is if I create a "People"-object and adds "Event"s to that "People"'s Set<Event> and then do:
session.save(people);
I want to save all data corresponding that "People" in its table and all infomation in the Set<Event> into the Event table. One People can have many Event
In Mysql I have 2 tables corresponding to People and Event and People's id key is an foreign key in the Event table (id_people) so I can bind people to events
When I compile my code I get an error that says:
"Cannot add or update a child row: a foreign key constraint fails"
My *.java files looks like:
People.java and Event.java
People.java
------------------------------------
Code:
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class People {
private int id;
private String namn;
private Set<Event> events=new HashSet<Event>();
public Set getEvents() {
return events;
}
public void setEvents(Set events) {
this.items = events;
}
public People(){
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNamn() {
return namn;
}
public void setNamn(String namn) {
this.namn = namn;
}
}
------------------------------------------------
Event.java
-------------------------------------------------
Code:
public class Event {
private int id;
private int id_people;
private String namn;
public Event(){
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getId_people() {
return id_people;
}
public void setId_people(int id) {
this.id_people = id;
}
public String getNamn() {
return namn;
}
public void setNamn(String namn) {
this.namn = namn;
}
}
-----------------------------------------------
My *.hbm.xml files looks like:
people.hbm.xml
----------------------------------------------
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="People" table="people">
<id name="id" column="id" type="java.lang.Integer" >
<generator class="increment" />
</id>
<property name="namn" column="namn" type="java.lang.String" />
<set name="events" table="event" cascade="all">
<key column="id_people" />
<one-to-many class="Event" />
</set>
</class>
</hibernate-mapping>
--------------------------------------------------
event.hbm.xml
----------------------------------------------------
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="Event" table="event" >
<id name="id" column="id" type="java.lang.Integer" >
<generator class="increment" />
</id>
<property name="id_people" column="id_people" type="java.lang.Integer" />
<property name="namn" column="namn" type="java.lang.String" />
</class>
</hibernate-mapping>
-------------------------------------------------------
I would be so glad if someone could help me solving/explain what Im doing wrong.
Best Regards /MiMa