2015-06-05 95 views
1

我對這個主題很陌生,我想知道我到目前爲止做了什麼錯誤。DB2,Hibernate,JPA:Schema does not exist

所以建立數據庫connectioin我創建了一個persistence.xml中:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" 
      xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation=" 
     http://java.sun.com/xml/ns/persistence 
     http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
    <persistence-unit name="Primary"> 
     <class>xxx.model.Lecture</class> 
     <properties> 
      <property name="javax.persistence.jdbc.driver" value="com.ibm.db2.jcc.DB2Driver" /> 
      <property name="javax.persistence.jdbc.url" value="jdbc:db2://localhost:50000/xxx" /> 
      <property name="javax.persistence.jdbc.user" value="xxx" /> 
      <property name="javax.persistence.jdbc.password" value="xxx" /> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.DB2Dialect"/> 
      <property name="show_sql" value="true"/> 
      <property name="hibernate.temp.use_jdbc_metadata_defaults" value="false"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

...和包括驅動程序.jar:db2jcc4.jar

當運行應用程序我得到的以下錯誤:

java.sql.SQLSyntaxErrorException: Schema 'DB2ADMIN' does not exist. 

所以我錯過了一些必要的東西?

在此先感謝!

+0

看起來您正在Windows中運行,名爲db2admin的用戶。當您遇到DB2錯誤時,您應該查找以SQLXXXX開頭的錯誤代碼,其中XXXX是四位數字。請嘗試查找SQL錯誤,然後我們可以幫助您。可能是,您試圖在該架構中創建一個對象,並且該用戶沒有在該架構中創建的權限。 – AngocA

回答

2

簡答:您需要在persistence.xml中指定默認數據庫模式名稱。

… 
<property name="hibernate.default_schema" value="xxx"/> 
… 

說明: 最有可能使用的是DB2ADMIN用戶連接到數據庫。 DB2中的數據庫模式名稱(如果未明確指定)等於用戶名,即DB2ADMIN。這樣的模式不存在於你的數據庫中,因此你有錯誤。

您需要在JPA配置中指定正確的數據庫模式名稱,即表所在的模式名稱。沒有JPA屬性來存檔,但是您仍然使用hibernate,所以您可以使用hibernate特定屬性來實現此目的。

相關問題