Séquence ou table manquante: hibernate_sequence
Je suis nouveau sur mise en veille prolongée et postgres. En fait, je suis en train de carte potgres base de données en utilisant Hibernate. C'est ma table stucture dans postgresql
CREATE TABLE employee
(
id serial NOT NULL,
firstname character varying(20),
lastname character varying(20),
birth_date date,
cell_phone character varying(15),
CONSTRAINT employee_pkey PRIMARY KEY (id )
)
Je suis en train d'ajouter un enregistrement dans la base de données en utilisant le code suivant
System.out.println("******* WRITE *******");
Employee empl = new Employee("Jack", "Bauer", new Date(System.currentTimeMillis()), "911");
empl = save(empl);
//This is the save function
private static Employee save(Employee employee) {
SessionFactory sf = HibernateUtil.getSessionFactory();
Session session = sf.openSession();
session.beginTransaction();
int id = (Integer) session.save(employee);
employee.setId(id);
session.getTransaction().commit();
session.close();
return employee;
}
Quand j'execute le code que j'obtiens l'erreur suivante
org.hibernate.HibernateException: Missing sequence or table: hibernate_sequence
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.tcs.com.Hibernate.HibernateUtil.buildSessionFactory(HibernateUtil.java:18)
at org.tcs.com.Hibernate.HibernateUtil.<clinit>(HibernateUtil.java:8)
at org.tcs.com.Hibernate.MainApp.list(MainApp.java:51)
at org.tcs.com.Hibernate.MainApp.main(MainApp.java:17)
Caused by: org.hibernate.HibernateException: Missing sequence or table: hibernate_sequence
at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1282)
at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:155)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:498)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1740)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1778)
at org.tcs.com.Hibernate.HibernateUtil.buildSessionFactory(HibernateUtil.java:15)
... 3 more
J'ai la séquence appelée "employee_id_seq" dans ma base de données. Mais je ne sais pas pourquoi la base de données est à la recherche d'hibernate_seq. Quelqu'un pourrait-il expliquer l'erreur et la raison.
Merci d'avance!
Ajout d'infos
C'est ma classe d'employés
import java.sql.Date;
public class Employee {
private int id;
private String firstname;
private String lastname;
private Date birthDate;
private String cellphone;
public Employee() {
}
public Employee(String firstname, String lastname, Date birthdate, String phone) {
this.firstname = firstname;
this.lastname = lastname;
this.birthDate = birthdate;
this.cellphone = phone;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public Date getBirthDate() {
return birthDate;
}
public void setBirthDate(Date birthDate) {
this.birthDate = birthDate;
}
public String getCellphone() {
return cellphone;
}
public void setCellphone(String cellphone) {
this.cellphone = cellphone;
}
}
source d'informationauteur Lakshmi | 2013-01-28
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas posté les bits importants: la
Employee
classe.Mais ma conjecture est que votre Employé est la classe à l'aide de
@GeneratedValue()
sans spécifier la séquence à utiliser. Donc, Hibernate utilise son nom par défaut: hibernate_sequence.Vous pouvez fournir un nom de la séquence dans le cadre de la GeneratedValue annotation. par exemple.
créer hibernate_sequence table :
Si vous n'utilisez pas d'annotation, vous devriez changer de YourClass.hbm.xml fichier.
Votre ID d'article devrait être:
Fichier de l'échantillon:
Vous pouvez faire deux choses.
L'un consiste à créer manuellement un vide hibernate_sequence table postgresql.
De deux, il est probablement un conflit avec les autorisations de compte d'utilisateur ne permettant pas le graal de créer cette table.
Pour moi, ce qui était la cause de cette erreur était la mauvaise version de MySql.Données de la bibliothèque.
J'ai eu une version 6.9.6.0 définis dans le web.config et pourtant, le réel référencé version est ancienne.
J'ai juste commenté :
Dans votre domaine ou un objet de Modèle d'annoter le champ id ci-dessous et cela devrait fonctionner. Pour moi, le GenerationType.AUTOMATIQUE a échoué