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. 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. May 30, 2013 Hibernate allows to keep foreign key name. Hibernate overrides the foreign key name by @ForeignKey. Cd product key generator. It has the attribute name that should be defined. Find the example.
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
Foreign Key In Mysql
Written By
Hibernate Foreign Key Name Generator Reviews
Sorry, you can't reply to this topic. It has been closed.
Comments are closed.
|
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |