PessoALL, boa tarde.
Já faz dois dias que estou na luta aqui, e não consigo sair do lugar. Inicialmente, eu costumo utilizar o eclipselink (jpa 2.1) para persistência no banco de dados - já faço isso há uns três anos. Mas, agora, o contexto mudou e eu preciso que o database seja criado automaticamente. E não estou conseguindo isso. Nem com uma classe mais simples possível:
@Entity
public class Cidade implements Serializable {
@Id
private Long id;
@Column(length=2)
@Basic
private String uf;
@Column(length=100)
@Basic
private String descricao;
@Version
private int version;
public Cidade() {
}
//getters e setters omitidos
}
e com o seguinte arquivo de persistência:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" 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">
<persistence-unit name="PUCloud" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>meupacote.Cidade</class>
</persistence-unit>
</persistence>
Estou setando uma fábrica de EntityManager:
public static synchronized EntityManager getEntityManager(String nomePu, final String senhaDeCripto, final String usuario) throws Exception {
if (emf==null) {
emf = Persistence.createEntityManagerFactory(nomePu, new HashMap<String, String>() {
private static final long serialVersionUID = 1L;
{
put("javax.persistence.jdbc.url", "jdbc:mysql://localhost:3306/meuBanco");
put("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
put("javax.persistence.jdbc.password", senhaDeCripto);
put("javax.persistence.jdbc.user", usuario);
//put("hibernate.hbm2ddl.auto", "update");
//put("javax.persistence.schema-generation.database.action", "drop-and-create");
//put("javax.persistence.schema-generation.create-source", "metadata");
//put("javax.persistence.schema-generation.create-database-schemas", "true");
//put("javax.persistence.schema-generation.database.action", "drop-and-create");
//put("eclipselink.ddl-generation", "drop-and-create-tables");
//put("eclipselink.create-ddl-jdbc-file-name", "createDDL_ddlGeneration.jdbc");
//put("eclipselink.drop-ddl-jdbc-file-name", "dropDDL_ddlGeneration.jdbc");
//put("eclipselink.ddl-generation.output-mode", "database");
}
});
}
return emf.createEntityManager();
}
Estão vendo as linhas em comentário no método acima? Então… já tentei TODAS… literalmente, inclusive com o conjunto de uma + outra, na tentativa de descobrir o motivo do erro. Sempre que eu rodo o projeto, aparece a mensagem:
[EL Severe]: ejb: 2016-07-12 16:13:37.281--ServerSession(1140466313)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'meuBanco'
Já chequei o usuário e ele está com todas as permissões no banco (inclusive já usei o usuário root para verificar isso…).
Alguém consegue ver e me falar onde eu estou errando?