Pessoal, estou tentando persistir um simples objeto no BD (point base) mas estou recebendo uma exception
Acho que está faltando o Persistence.xml…
A conexão com o bd está sendo estabelecida através do arquivo hibernate.properties (inclusive ele gera a tabela automaticamente através das annotations).
O que está faltando para o hibernate reconhecer esta classe e persistir o objeto no bd?
Uma dúvida básica, Há diferença entre usar as annotations da JPA ao invés das hibernate annotations? Tipo, o hibernate sabe trabalhar normalmente com as annotations da JPA ou existem diferenças ao utilizar as classes que auxiliam as operações do CRUD?
MINHA CLASSE A SER PERSISTIDA
@org.hibernate.annotations.Entity
public class User {
@Id
@GeneratedValue
@Column(name = "ID_USUARIO", nullable = false, length = 255)
private Long id;
@Column(name = "NM_NOME", nullable = false, length = 255)
private String name;
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;
}
}
AGORA A CLASSE MAIN
public class TestaHibernate {
/**
* @param args
*/
public static void main(String[] args) {
AnnotationConfiguration cfg = new AnnotationConfiguration();
SessionFactory factory = cfg.buildSessionFactory();
Session session = factory.openSession();
com.b2winc.m3.hibernate.User usuario = new com.b2winc.m3.hibernate.User();
usuario.setName("Zé fulano");
session.save(usuario);
session.flush();
session.close();
}
na escuta… 
Pra ficar mais complicado ainda, neste projeto tb estou utilizando spring…
Naõ tem nada de complicado nisso ainda…
vc esta usando anotations…logo não precisa de arquivos xml para cada objeto a ser persisitido. Porém é preciso descrever no seu hibernate.cfg.xml as classes que são managed pelo Hibernate.
<mapping class=“br.com.suaempresa.classe” />
Já fez isso ???
Coloca seu arquivo .xml ai. :?
Eu não criei este arquivo por achar que não seria necessário por causa das annotations.
então eu vou ter que criar o arquivo hibernate.cfg.xml, mapear as classes no mesmo e repetir a configuração de mapeamento do bd, visto que a mesma está configurada no hibernate.properties?
Enquanto vocês respondem eu vou criando o tal arquivo…
hibernate.properties
Normalmente usamos o arquivo do hibernate.cfg.xml e nem sei se dá para usar o hibernate.properties provavelmente sim, só nunca usei.
Lá no seu xml vc ainda pode escrever qual o pool de conexão deseja usar já que o hibernate não pode ser posto em produção sem um poll de conexões adequado.
Recomendo o C3P0
o meu hibernate.cfg.xml está desta forma: (bem simples)
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<hibernate-configuration>
<!-- a SessionFactory instance listed as /jndi/name -->
<session-factory>
<property name="dialect">
org.hibernate.dialect.PointbaseDialect
</property>
<property name="connection.driver_class">
com.pointbase.jdbc.jdbcUniversalDriver
</property>
<property name="connection.url">
jdbc:pointbase:server://localhost:9093/weblogic_eval
</property>
<property name="connection.username">PBPUBLIC</property>
<property name="connection.password">PBPUBLIC</property>
<property name="hibernate.show_sql">true</property>
<!-- mapping files -->
<mapping class="com.hibernate.User"/>
</session-factory>
</hibernate-configuration>
mas não está aceitando o mapeamento da classe (o mapping não está reconhecendo o atributo class). É ali mesmo que fica este mapeamento? Tem um arquivo destes, completão, para eu usar como exemplo?
segue:
<?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>
<!-- MySQL -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/base</property>
<property name="hibernate.connection.username"></property>
<property name="hibernate.connection.password"></property>
<!-- MySQL -->
<!-- Oracle //
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@:1521:easyn0</property>
<property name="hibernate.connection.username"></property>
<property name="hibernate.connection.password"> </property>
// Oracle -->
<!-- Poll Conexões c3p0 -->
<property name="hibernate.c3p0.max_size">100</property>
<property name="hibernate.c3p0.min_size">10</property>
<property name="hibernate.c3p0.timeout">50000</property>
<property name="hibernate.c3p0.max_statements">3000</property>
<property name="hibernate.c3p0.acquire_increment">2</property>
<property name="hibernate.c3p0.validate">false</property>
<!-- Poll Conexões c3p0 -->
<!-- Mapeamento das Classes -->
<mapping class="br.com.suaempresa.beans.classe" />
<mapping class="br.com.suaempresa.beans.classe" />
<!-- Mapeamento das Classes -->
</session-factory>
</hibernate-configuration>
Cara, criei o arquivo, mapeei as classes mas continua dando erro. Não sei se o arquivo está no lugar certo, por isso criei uma cópia do mesmo em vários locais, tipo, na pasta META-INF, no src e na raiz do projeto e nada. Também criei o arquivo Persistence.xml com o mapeamento das classes e tambem espalhei ele por todo canto e nada. Tem alguma coisa a ver com o Spring? Sei lá, acrescentar algum mapeamento referente ao hibernate no applicationcontext.xml do Spring já que estas classes são beans do Spring? ???