Vê se alguém pode me ajudar.
Estou estudando a apostila da Caelum FJ21,porém ao invés de utilizar a MySql optei pelo POSTGRES.porém quando vou fazer o exercício AdicionaTarefa um registro no banco dá o seguinte erro.
Sou novo em Java, vê se conseguir se claro.
Para conexão utilizo a Classe JdbcTarefaDao.
@Repository
public class JdbcTarefaDao {
private final Connection connection;
@Autowired
public JdbcTarefaDao(DataSource dataSource) {
try {
this.connection =dataSource.getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
public void adiciona(Tarefa tarefa) {
String sql = "insert into tarefas (descricao, finalizado) values (?,?)";
PreparedStatement stmt;
try {
stmt = connection.prepareStatement(sql);
stmt.setString(1, tarefa.getDescricao());
stmt.setBoolean(2, tarefa.isFinalizado());
stmt.execute();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
[code]public class AdicionaTarefa {
public static void main(String[] args) {
Tarefa tarefa = new Tarefa();
tarefa.setDescricao("Estudar JPA e Hibernate");
tarefa.setFinalizado(true);
tarefa.setDataFinalizacao(Calendar.getInstance());
EntityManagerFactory factory = Persistence.
createEntityManagerFactory("tarefas");
EntityManager manager = factory.createEntityManager();
manager.getTransaction();
manager.persist(tarefa);
manager.getTransaction();
System.out.println("ID da tarefa :"+ tarefa.getId());
manager.close();
}
}[/code]
15:38:43,296 WARN HibernatePersistence:58 - HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead.
15:38:43,312 WARN HibernatePersistence:58 - HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead.
15:38:43,312 WARN HibernatePersistence:58 - HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; use [org.hibernate.jpa.HibernatePersistenceProvider] instead.
Exception in thread "main" java.lang.AbstractMethodError: org.postgresql.jdbc2.Jdbc2DatabaseMetaData.supportsNamedParameters()Z
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:154)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:89)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:206)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:178)
at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1885)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:843)
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:399)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:842)
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:73)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:54)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
at br.com.caelum.tarefas.jpa.AdicionaTarefa.main(AdicionaTarefa.java:21)
Minha configuração de Persistence
[code]
org.hibernate.ejb.HibernatePersistence
br.com.caelum.tarefas.modelo.Tarefa
[/code]