Estou tentanto gerar o banco da minha app, mas estou enfrentando um problema muito estranho.
Segue a classe que está mapeada:
@Entity(name="users")
public class UserOff implements User{
@Id
@Column(name="id_user")
private long id;
@Column(name="name")
private String name;
@Column(name="screen_name",unique=true, nullable=false)
private String screenName;
public UserOff() {
}
//gets e sets
}
Abaixo o hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<hibernate-configuration>
<session-factory name="">
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/projeto</property>
<property name="connection.username">root</property>
<property name="connection.password">12345</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<mapping class="br.com.socialquery.twitter.offline.model.UserOff" />
</session-factory>
</hibernate-configuration>
E abaixo a classe que gera o banco:
package br.com.myproject.hibernate.dao.util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
public class HibernateUtil {
private static SessionFactory sessionFactory;
private static AnnotationConfiguration configuration;
private static Session session;
static
{
configuration = new AnnotationConfiguration();
configuration.configure("br/com/project/cfg/hibernate.cfg.xml");
sessionFactory = configuration.buildSessionFactory();
}
private static SessionFactory getSessionFactory() {
return sessionFactory;
}
public static void geraBanco() {
SchemaExport se = new SchemaExport(configuration);
se.create(true, true);
}
public static void open(){
session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
}
public static Session getOpenSession(){
if (session == null || !session.isOpen())
open();
return session;
}
public static void close(){
try{
session.getTransaction().commit();
}catch (Exception e) {
session.getTransaction().rollback();
}finally{
session.close();
}
}
public static void main(String[] args) {
try {
HibernateUtil h = new HibernateUtil();
h.geraBanco();
System.out.println("ok");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Uso esses códigos em todos os meus projetos, mas nesse especificamente não está funcionando.
O erro que dá:
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
java.lang.ExceptionInInitializerError
Caused by: java.lang.reflect.MalformedParameterizedTypeException
at sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.validateConstructorArguments(Unknown Source)
at sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.<init>(Unknown Source)
at sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.make(Unknown Source)
at sun.reflect.generics.factory.CoreReflectionFactory.makeParameterizedType(Unknown Source)
at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Unknown Source)
at sun.reflect.generics.tree.ClassTypeSignature.accept(Unknown Source)
at sun.reflect.generics.repository.MethodRepository.getReturnType(Unknown Source)
at java.lang.reflect.Method.getGenericReturnType(Unknown Source)
at org.hibernate.annotations.common.reflection.java.JavaXClass.getDeclaredMethodProperties(JavaXClass.java:90)
at org.hibernate.annotations.common.reflection.java.JavaXClass.getDeclaredProperties(JavaXClass.java:106)
at org.hibernate.annotations.common.reflection.java.JavaXClass.getDeclaredProperties(JavaXClass.java:98)
at org.hibernate.cfg.AnnotationBinder.addElementsOfAClass(AnnotationBinder.java:1023)
at org.hibernate.cfg.AnnotationBinder.getElementsToProcess(AnnotationBinder.java:859)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:666)
at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:534)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:286)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
at br.com.myproject.hibernate.dao.util.HibernateUtil.<clinit>(HibernateUtil.java:19)
Exception in thread "main"
Alguém sabe me explicar a razao? Ou como consertar?