Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

O prefixo "xsi" do atributo "xsi:schemaLocation" associado a um tipo de elemento "persistence" não está vinculado.

Estou tendo o seguinte erro ao tentar executar o TesteJPA.java:

[Fatal Error] :2:147: O prefixo "xsi" do atributo "xsi:schemaLocation" associado a um tipo de elemento "persistence" não está vinculado.
Exception in thread "main" javax.persistence.PersistenceException: Invalid persistence.xml.
Error parsing XML (line2 : column 147): O prefixo "xsi" do atributo "xsi:schemaLocation" associado a um tipo de elemento "persistence" não está vinculado.

Segue meu persistence.xml logo abaixo:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0">
    <persistence-unit name="financas">
        <!-- Implementação do JPA, no nosso caso Hibernate -->
        <provider>org.hibernate.ejb.HibernatePersistence</provider>

        <!-- Aqui são listadas todas as entidades -->
        <class>br.com.caelum.financas.modelo.Conta</class>
        <properties>
            <!-- Propriedades JDBC -->
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/financas" />
            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="root" />

            <!-- Configurações específicas do Hibernate -->
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
            <property name="hibernate.hbm2ddl.auto" value="update" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
        </properties>
    </persistence-unit>
</persistence>

Tentei colocar a especificação:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

na tag persistence, porém não resolveu, alterando a mensagem de erro para:

Error parsing XML (line-1 : column -1): cvc-elt.1: Não pode localizar a declaração do elemento 'persistence'.

O que estou fazendo de errado?

2 respostas

Esse erro é novo para mim :). Mas como a exception ta informando, alguma coisa ta declarada errada...

<?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">

Troca para usar o cabeçalho que eu passei.. chuto que o version não vai gerar problemas.

solução!

Alberto, muito obrigado pelo retorno.

Infelizmente com a sua implementação na tag persistence obtive o erro abaixo:

Exception in thread "main" javax.persistence.PersistenceException: Invalid persistence.xml.
Error parsing XML (line-1 : column -1): cvc-elt.1: Não pode localizar a declaração do elemento 'persistence'.

PORÉM eu fiz uma implementação que funcionou, que é a seguinte:

<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://ww.w3.org/2001/XMLSchema-instance">

A versão tem de ser a 2.0, caso contrário eu tenho o seguinte erro:

Exception in thread "main" javax.persistence.PersistenceException: Invalid persistence.xml.
Error parsing XML (line-1 : column -1): cvc-complex-type.3.1: O valor '2.1' do atributo 'version' do elemento 'persistence' não é válido em relação ao uso do atributo correspondente. O atributo 'version' tem um valor fixo de '2.0'.