0

I am new at Hibernate Annotations and I'd like to try an example.

I have two classes (Node and HyperEdge), when I run my application, it only creates a table for Node and not for HyperEdge.

This is the code I developed:

Node :

import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="Node") public class Node { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Integer id; @Column private String name; @Column(name="\"group\"") private Integer group; public Node() { super(); // TODO Auto-generated constructor stub } public Node(Integer id, String name, Integer group) { super(); this.id = id; this.name = name; this.group = group; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getGroup() { return group; } public void setGroup(Integer group) { this.group = group; } } 

HyperEdge :

import javax.persistence.Column; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Table(name="HyperEdge") public class HyperEdge { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Integer id; @Column private String title; public HyperEdge() { super(); // TODO Auto-generated constructor stub } public HyperEdge(Integer id, String title) { super(); this.id = id; this.title = title; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } } 

hibernate.cfg.xml :

<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/exhiber</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <property name="connection.pool_size">1</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="current_session_context_class">thread</property> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <property name="show_sql">true</property> <property name="hbm2ddl.auto">create</property> <mapping class="com.hib.ex.entity.Node" /> <mapping class="com.hib.ex.entity.HyperEdge" /> </session-factory> </hibernate-configuration> 

HibernateDao :

import java.util.List; import org.hibernate.Session; import org.hibernate.SessionFactory; import com.hib.ex.entity.HyperEdge; import com.hib.ex.entity.Node; public class HibExDao { public void saveNode(Node noeud) { SessionFactory sf = HibExUtil.getSessionFactory(); Session session = sf.openSession(); session.beginTransaction(); session.save(noeud); session.getTransaction().commit(); session.close(); } public List listNode() { SessionFactory sf = HibExUtil.getSessionFactory(); Session session = sf.openSession(); List nodes = session.createQuery("FROM Node").list(); session.close(); return nodes; } public Node readNode(Integer id) { SessionFactory sf = HibExUtil.getSessionFactory(); Session session = sf.openSession(); Node noeud = (Node) session.get(Node.class, id); session.close(); return noeud; } public void saveHyperEdge(HyperEdge he, String chaine) { SessionFactory sf = HibExUtil.getSessionFactory(); Session session = sf.openSession(); session.beginTransaction(); he.setTitle(chaine); session.save(he); session.getTransaction().commit(); session.close(); } public List listHyperEdge() { SessionFactory sf = HibExUtil.getSessionFactory(); Session session = sf.openSession(); List hyperedges = session.createQuery("FROM HyperEdge").list(); session.close(); return hyperedges; } public HyperEdge readHyperEdge(Integer id) { SessionFactory sf = HibExUtil.getSessionFactory(); Session session = sf.openSession(); HyperEdge hyperEdge = (HyperEdge) session.get(HyperEdge.class, id); session.close(); return hyperEdge; } } 

The main class :

import java.util.List; import com.hib.ex.dao.HibExDao; import com.hib.ex.entity.HyperEdge; import com.hib.ex.entity.Node; public class Run { public static void main(String[] args) { HibExDao dao = new HibExDao(); System.out.println("****************WRITING****************"); Node n1 = new Node(); n1.setName("toto"); dao.saveNode(n1); System.out.println("Node saved!"); Node n2 = new Node(); n2.setName("lala"); dao.saveNode(n2); System.out.println("Node saved!"); System.out.println("\n****************READING****************"); List nodes = dao.listNode(); System.out.println("Name in Node number 2 is: " + dao.readNode(2).getName()); } } 

What is the problem? And how can I fix it?

Thanks!

1
  • 1
    Add an @Entity annotation to HyperEdge. Commented Jul 8, 2014 at 16:50

3 Answers 3

3

Perhaps you have to add @Entity annotation to your HyperEdge class

Sign up to request clarification or add additional context in comments.

Comments

2

@Entity annotation to missing from your HyperEdge class

The @Entity annotation is used to mark this class as an Entity bean. So the class should atleast have a package scope no-argument constructor.

The @Table annotation is used to specify the table to persist the data. The name attribute refers to the table name. If @Table annotation is not specified then Hibernate will by default use the class name as the table name.

Comments

0

In HyperEdge class you have to add @Entity annotation so that hibernate can treat it as a entity to map with table HyperEdge in database.

@Entity @Table(name="HyperEdge") public class HyperEdge { 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.