DB2, Hibernate, JPA: схема не существует
Я довольно новичок в этом вопросе, и я хотел бы знать, что не так с тем, что я сделал до сих пор.
Итак, чтобы установить соединение с базой данных, я создал файл 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.
Так я что-то упустил?
Заранее спасибо!
1 ответ
Краткий ответ: вам нужно указать имя схемы БД по умолчанию в файле persistence.xml.
…
<property name="hibernate.default_schema" value="xxx"/>
…
Объяснение: Скорее всего, вы используете пользователя DB2ADMIN для подключения к БД. Имя схемы базы данных в DB2 (если не указано явно) равно имени пользователя, то есть DB2ADMIN. Такой схемы нет в вашей БД, поэтому вы получили ошибку.
Вам необходимо указать правильное имя схемы базы данных в конфигурации JPA, то есть имя схемы, в которой расположены таблицы. Нет свойства JPA для архивирования, но вы все равно используете hibernate, так что вы можете использовать специфическое свойство hibernate для достижения этой цели.