<?xml version="1.0" encoding="UTF-8"?>
<persistence
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="erp" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver"/>
<property name="javax.persistence.jdbc.user" value="sa"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="hibernate.show_sql" value="false"/>
<property name="hibernate.format_sql" value="false"/>
<property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:data/athos"/>
</properties>
</persistence-unit>
</persistence>
Estes são os arquivos jar do projeto desktop JPA 2.2 hibernate 5.3 Java 1.9
antlr-2.7.7
classmate-1.3.0
dom4j-1.6.1
hibernate-commons-annotations-5.0.1.Final
hibernate-core-5.3.0.Beta1
hsqldb
itextpdf-5.5.12
jandex-2.0.3.Final
javassist-3.22.0-GA
javax.persistence-api-2.2
jaxb-api-2.3.0
jboss-logging-3.3.1.Final
jboss-transaction-api_1.2_spec-1.0.1.Final
jfreechart-1.5.0
jlfgr-1_0
mysql-connector-java-5.1.22-bin
Qual erro que dá?
O programa roda sem erros o problema é que fica aqueles icones vermelhos de erro no eclipse.
package erp.banco;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.Query;
import erp.aop.JPA;
final class BancoDaoImp implements BancoDao {
@Override
public String construirQuery(StringBuilder stringBuilder) {
String pesquisa = stringBuilder.toString();
if (pesquisa.endsWith("and")) {
pesquisa = stringBuilder.substring(0, stringBuilder.length() - 4);
stringBuilder = new StringBuilder(pesquisa);
}
if (pesquisa.endsWith("where")) {
pesquisa = stringBuilder.substring(0, stringBuilder.length() - 5);
stringBuilder = new StringBuilder(pesquisa);
}
stringBuilder.append(" order by B.nome");
pesquisa = stringBuilder.toString();
return pesquisa;
}
@Override
public void deletarBanco(Banco banco) {
EntityManager em = JPA.getEMF().createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
em.remove(em.find(Banco.class, banco.getId()));
tx.commit();
em.close();
}
@Override
public Banco getBanco(Banco banco) {
EntityManager em = JPA.getEMF().createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
return em.find(Banco.class, banco.getId());
}
@Override
public Collection<Banco> getBancoTodos() {
EntityManager em = JPA.getEMF().createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
Query query = em.createQuery("from erp.banco.Banco B order by B.nome");
@SuppressWarnings("unchecked")
List<Banco> list = query.getResultList();
tx.commit();
em.close();
return list;
}
@Override
public Collection<Banco> pesquisarBanco(Banco banco) {
StringBuilder qsb = new StringBuilder();
qsb.setLength(0);
qsb = new StringBuilder();
qsb.append("select B from erp.banco.Banco B where");
HashMap<String, Object> parametros = new HashMap<String, Object>();
if (banco.getId() != null) {
qsb.append(" B.id = :id and");
parametros.put("id", banco.getId());
}
if (banco.getNome() != null && !banco.getNome().trim().equals("")) {
qsb.append(" B.nome like :nome and");
parametros.put("nome", "%" + banco.getNome() + "%");
}
if (banco.getCodigo() != null && !banco.getCodigo().trim().equals("")) {
qsb.append(" B.codigo like :codigo and");
parametros.put("codigo", "%" + banco.getCodigo() + "%");
}
EntityManager em = JPA.getEMF().createEntityManager();
Query query = em.createQuery(this.construirQuery(qsb));
Set<Map.Entry<String, Object>> set = parametros.entrySet();
for (Map.Entry<String, Object> me : set) {
query.setParameter(me.getKey(), me.getValue());
}
EntityTransaction tx = em.getTransaction();
tx.begin();
@SuppressWarnings("unchecked")
List<Banco> list = query.getResultList();
tx.commit();
em.close();
return list;
}
@Override
public void salvarBanco(Banco banco) {
EntityManager em = JPA.getEMF().createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
em.merge(banco);
tx.commit();
em.close();
}
}
import javax.persistence.EntityTransaction;
import javax.persistence.Query;
EntityManager em = JPA.getEMF().createEntityManager();
EntityTransaction tx = em.getTransaction();
// no arquivo acima essas linhas ficam com o ícone vermelho de erro
// Esse arquivo já não aparece nenhum ícone de erro
package erp.aop;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class JPA {
private static final EntityManagerFactory emf;
static {
try {
emf = Persistence.createEntityManagerFactory("erp");
} catch (Exception ex) {
System.err.println("Initial EntityManagerFactory creation failed." + ex);
ex.printStackTrace();
throw new ExceptionInInitializerError(ex);
}
}
public static EntityManagerFactory getEMF() {
return emf;
}
}
// Esse arquivo também não aparece erro nenhum
package erp.banco;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.PersistenceContext;
@SuppressWarnings("serial")
@PersistenceContext(unitName = "erp")
@Entity
public class Banco implements Serializable {
@Id
@GeneratedValue
private Long id;
@Column(length = 10)
private String codigo;
@Column(length = 50)
private String nome;
public String getCodigo() {
return this.codigo;
}
public Long getId() {
return this.id;
}
public String getNome() {
return this.nome;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
public void setId(Long id) {
this.id = id;
}
public void setNome(String nome) {
this.nome = nome;
}
@Override
public String toString() {
return this.nome;
}
}
// Essa é minha versão do eclipse
Eclipse IDE for Java Developers
Version: Oxygen.2 Release (4.7.2)
Build id: 20171218-0600
OS: Windows 10, v.10.0, x86_64 / win32
Será que eu devo criar um jee project em vez de um javaproject ?
E baixar o eclipse jee ?
Resolvido. Se for usar JPA tem que criar
File -> New -> Java EE-> Application Client Project
Só não consegui o arquivo persistence.xml para o JPA 2.2
Resolvido nada esqueci de olhar, ele está compilando com java 1.8 quando mudei para java 1.9 os erros voltaram.
Sei que é antigo esse post, mas fiz um tutorial sobre JPA, com a sua configuração, por favor, veja se ajuda. Seguem os links:
http://www.tidicas.com.br/?p=1864
http://www.tidicas.com.br/?p=130