Hibernate Foreign Key Name Generator

  

Generator classes in hibernate are used to generate the primary key ids, the types we have sequence, identity, increment, hilo, native and foreign and uuid generators. Here we discussed hilo generator formula in detaild explanation. Hibernate generator classes have been used to generating the primary key. Aug 01, 2016  Introduction One of my readers asked me to help him map a Composite Primary Key using JPA and Hibernate. Because this is a recurrent question, I decided to write a blog post in which I describe this mapping is more detail. Java prepared statement get generated keys. Domain Model A relational database composite key contains two or more columns which together for the primary key of a given table. In the diagram above, the employee table.

Hibernate Foreign Key Name Generator Free


Posted by: carcophan
Date: January 20, 2006 03:06AM

Hi,
I'm posting a Hibernate problem here because nobody could help me solve my problem at forum.hibernate.org. I've tried google, and the Hibernate manual too, and I've tried all sorts of workarounds , without any luck! - So I was hoping, someone here could give me some advice. Anyway here's the reason for my post:
(Using Hibernate 3.1 and MySQL 4.1.14 on SuSE 9.2)
I've got 2 Tables: Parent and Child:
CREATE TABLE `parent` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(20) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `child` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(30) default NULL,
`parent_id` int(11) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `parent_id` (`parent_id`),
CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Here are my Mapping Files for:
Parent:
<hibernate-mapping>
<class name='entities.Parent' table='parent' >
<id name='id' column='id' unsaved-value='-1' type='long'>
<generator/>
</id>
<property name='name' />
<set name='children' inverse='true' cascade='all'>
<key column='parent_id' not-null='true' />
<one-to-many />
</set>
</class>
</hibernate-mapping>
and Child:
<hibernate-mapping>
<class name='entities.Child' table='child'>
<id name='id' column='id' unsaved-value='-1' type='long'>
<generator/>
</id>
<property name='name' />
<property name='parent_id' not-null='true' />
</class>
</hibernate-mapping>
When I load a Parent all works fine, and hibernate populates all the Child Objects associated with the Parent, and adds them to the HashSet.
But when I try to create a new Parent and add new Children to the Parent, I get the following error:
org.hibernate.exception.ConstraintViolationException: could not insert: [entities.Child]
and..
Caused by: java.sql.SQLException: Cannot add or update a child row: a foreign key constraint fails
Here's my Java Code for the parent and child classes:
package entities;
public class Child {
private String name = null;
private long id = -1;
private long parent_id= -1;
public long getParent_id() {
return parent_id;
}
public void setParent_id(long parent_id) {
this.parent_id = parent_id;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package entities;
import java.util.Set;
public class Parent {
private String name = null;
private long id = -1;
private Set children = null;
public Set getChildren() {
return children;
}
public void setChildren(Set children) {
this.children = children;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
this is what I do when I try to create and save a new Parent with new Children:
Session session = SessionManager.getSessionFactory().getCurrentSession();
session.beginTransaction();
Parent p= new Parent();
p.setName('mom');
Child c = new Child();
c.setName('kid1');
p.setChildren(new HashSet());
p.getChildren().add(c);
session.save(p);
session.getTransaction().commit();
Apparently to me, Hibernate doesn't know the Parents id at the time of saving and therefore cant set the foreign key of the Parent_id in the Child table. But how to I tell Hibernate that it should update this foreign key?
This problem has been haunting me for days now, and I cant solve it on my own. Maybe someones got some helpful hints on how to solve this problem.

Options:Reply•Quote

Hibernate Foreign Key Name Generator For Sale

Written By

Sorry, you can't reply to this topic. It has been closed.

Hibernate Foreign Key Name Generator For Kids

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.