Я создал образец Oracle 12c PDB (сменная база данных), используя инструкции из здесь . Как подключиться к этой подключаемой базе данных с помощью приложения Hibernate? Я использую пример приложения Hibernate от здесь
Я изменил файл hibernate.cfg.xml следующим образом:
<?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>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:sys</property>
<property name="connection.username">sys as sysdba</property>
<property name="connection.password">helloWORLD12</property>
<property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
<property name="dialect">org.hibernate.dialect.Oracle12cDialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="hbm2ddl.auto">create</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<property name="current_session_context_class">thread</property>
<mapping class="net.codejava.hibernate.Book" />
</session-factory>
</hibernate-configuration>
Но при запуске программы я получаю следующую трассировку:
Exception in thread "main" org.hibernate.HibernateException: Error accessing stax stream
at org.hibernate.boot.cfgxml.internal.JaxbCfgProcessor.unmarshal(JaxbCfgProcessor.java:107)
at org.hibernate.boot.cfgxml.internal.JaxbCfgProcessor.unmarshal(JaxbCfgProcessor.java:65)
at org.hibernate.boot.cfgxml.internal.ConfigLoader.loadConfigXmlResource(ConfigLoader.java:57)
at org.hibernate.boot.registry.StandardServiceRegistryBuilder.configure(StandardServiceRegistryBuilder.java:163)
at net.codejava.hibernate.BookManager.setup(BookManager.java:23)
at net.codejava.hibernate.BookManager.main(BookManager.java:100)
Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[18,6]
Message: The processing instruction target matching "[xX][mM][lL]" is not allowed.
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:604)
at com.sun.xml.internal.stream.XMLEventReaderImpl.peek(XMLEventReaderImpl.java:276)
at org.hibernate.boot.cfgxml.internal.JaxbCfgProcessor.unmarshal(JaxbCfgProcessor.java:103)
... 5 more
Пожалуйста, дайте мне знать, где я иду не так. В сети почти нет ресурсов для использования Oracle 12c PDB с Hibernate.
ОБНОВЛЕНИЕ 1: в моем конфигурационном файле была дополнительная строка кода XML, которая привела к ошибке синтаксического анализа XML. Теперь - как мне связать CDB / PDB с определенной учетной записью пользователя, поскольку использование PDB через пользователя SYS не рекомендуется.
У меня есть PDB с именем 'pdb1', и он связан с учетной записью пользователя sys. Он хранится в следующем месте:
D: \ приложение \ MyUserName \ виртуальный \ oradata \ ORCL \ pdb1
Я создал нового пользователя 'c ## test', а затем создал pdb, во время входа в систему пользователя 'c ## test', используя следующую команду:
create pluggable database pdb3 admin user pdb_admin3 identified by helloWORLD12
file_name_convert=('D:\app\myusername\virtual\oradata\orcl\pdbseed\',
'D:\app\myusername\virtual\oradata\test\pdb3\');
'pdb3' успешно создан, но он не ассоциируется с пользователем 'c ## test'.
Трассировка ошибки, которую я получаю сейчас, выглядит следующим образом: https://pastebin.com/skVMLkqT