Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Hibernate连接到Oracle 12c PDB_Java_Hibernate_Hibernate.cfg.xml - Fatal编程技术网

Java 如何使用Hibernate连接到Oracle 12c PDB

Java 如何使用Hibernate连接到Oracle 12c PDB,java,hibernate,hibernate.cfg.xml,Java,Hibernate,Hibernate.cfg.xml,我已经使用中的说明创建了一个示例Oracle 12c PDB(可插拔数据库)。如何使用Hibernate应用程序连接到此可插拔数据库?我正在使用来自的示例Hibernate应用程序 我将hibernate.cfg.xml文件更改如下: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration D

我已经使用中的说明创建了一个示例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>
请告诉我哪里出了问题。在Hibernate中使用Oracle 12c PDB几乎没有在线资源

更新1:我的配置文件中有一行额外的XML代码,这导致了XML解析错误。现在-如何将CDB/PDB与特定用户帐户关联,因为不建议通过SYS user使用PDB


我有一个名为“pdb1”的PDB,它与sys用户帐户关联。它存储在以下位置:

D:\app\myusername\virtual\oradata\orcl\pdb1

我创建了一个新用户“c##test”,然后在登录到用户“c##test”时使用以下命令创建了一个pdb:

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”关联


我现在得到的错误跟踪如下:

问题在于您使用的语法。您使用的是:SID而不是/SERVICE\u NAME,因此请确保将此行更改为:

<property name="connection.url">jdbc:oracle:thin:@localhost:1521/sys</property>
3-将依赖项添加到Pom.xml

<!-- ORACLE database driver -->
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc8</artifactId>
            <version>12.2.0.1</version>
        </dependency>

com.oracle
ojdbc8
12.2.0.1

该错误是XML解析错误,而不是Oracle错误。您需要检查XML文件的格式。另外:您真的有名为
sys
的PDB吗?为什么要使用应用程序中的SYS帐户?这是一个非常非常糟糕的主意。您应该创建一个普通用户,并从应用程序中使用它。不要对应用程序表使用SYS(或SYSTEM)。我有一个名为“pdb1”的PDB,它与SYS用户帐户关联。它存储在以下位置:D:\app\myusername\virtual\oradata\orcl\pdb1。我创建了一个新用户“c####test”,然后在登录到用户“c###test”时使用以下命令创建了一个pdb:创建可插拔数据库pdb3管理员用户pdb#admin3,由helloWORLD12文件名标识(D:\app\myusername\virtual\oradata\orcl\pdbseed\,'D:\app\myusername\virtual\oradata\test\pdb3\);'pdb3已成功创建,但未与用户“c##test”关联。为什么会这样?这是一个完全不同的问题,与Hibernate配置的解析错误无关file@a_horse_with_no_nameXML解析不再是问题所在。实际上,我有一行额外的XML代码,这导致了解析错误。您能否告诉我如何创建与特定用户关联的pdb。然后您应该更新您的问题并包含您收到的真实错误消息。如果您使用带有服务名称的URL,则应使用
@//localhost:1521
,而不是
@localhost
(这是旧的不推荐使用的URL格式)-但这不是问题的根本原因。驱动程序从未建立连接,因为Hibernate无法解析XML文件。@Mohammaddrezaalagheband,我无法将cdb/pdb与用户帐户关联。我该怎么做?我已经更新了我的问题。@pikaraider我更新了我的答案,请告诉我它是否有效,因为您可能需要使用其他版本的ojdbc@pikaraider没问题,我会更新我的答案以手动安装它。请再检查一下
<!-- ORACLE database driver -->
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc8</artifactId>
            <version>12.2.0.1</version>
        </dependency>