Проблема с изменением базы данных в Hibernate - PullRequest
3 голосов
/ 21 марта 2011

У меня проблема с hibernate и я точно не знаю, что происходит, у меня есть этот проект на работе, где я подключаюсь к базе данных Oracle 10g, используя следующие настройки:

Host Name: localhost
port:1521
SID:orcl
user:anfxi
password:password

Теперь я дома пытаюсь работать с той же базой данных удаленно, я подключен через VPN, а ip базы данных теперь 10.73.98.230, я импортировал мою WAR и изменил настройки в моем hibernate.cfg.xml от:

<property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin://localhost:1521:orcl</property>
<property name="hibernate.connection.username">anfexi</property>
<property name="connection.password">password</property>
<property name="connection.pool_size">1</property>
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">validate</property>
<property name="current_session_context_class">thread</property>

до:

<property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin://10.73.98.230:1521:orcl</property>
<property name="hibernate.connection.username">anfexi</property>
<property name="connection.password">password</property>
<property name="connection.pool_size">1</property>
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">validate</property>
<property name="current_session_context_class">thread</property>

но я получаю эту ошибку:

ERROR [main] (SchemaValidator.java:135) - could not get database metadata
java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
localhost:1521:orcl

так что кажется, что он все еще использует localhost в качестве адреса БД, я очистил свой проект и перестроил, все еще без удачи, есть ли что-то еще, что я мог бы пропустить? конфигурация гибернации кэшируется в каком-то файле, который мне нужно стереть или что-то в этом роде?

EDIT Для чего бы это ни служило, я могу подключиться с помощью разработчика SQL, проблема в спящем режиме, все еще с использованием старого дескриптора соединения localhost:1521:orcl.

Спасибо за вашу помощь!

Ответы [ 4 ]

2 голосов
/ 29 марта 2011

Убедитесь, что XML-файл, который вы изменяете в Eclipse, действительно развертывается на сервере. Время от времени я сталкиваюсь с проблемами, когда Eclipse не знает, что ему нужно повторно развертывать определенные файлы для моего веб-приложения.

Если вы используете Tomcat и развертываете с использованием метаданных рабочей области (по умолчанию), вы можете проверить, как выглядят фактически развернутые WAR-файлы, посмотрев на вашу файловую систему в:

WORKSPACE/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/APPNAME/.../path/to/hibernate.cfg.xml

Если вы обнаружите, что файл конфигурации НЕ обновляется, я бы порекомендовал отменить развертывание вашего приложения в Eclipse, удалить весь каталог APPNAME по указанному выше пути и повторно развернуть clean.

Если ничего из этого не работает, выполните поиск "localhost" в масштабах всего проекта и посмотрите, возможно ли где-нибудь какие-либо жестко закодированные строки соединений.

1 голос
/ 26 марта 2011

Эта проблема обычно возникает из-за неправильного файла конфигурации.Возможно, у вас есть две копии файла, и вы изменили одну, но система использует другую

Обычно при сборке / компиляции ресурсы копируются в целевую папку / папку сборки.Проверьте исходные папки и создайте целевые папки и т. Д.

Найдите в файловой системе все файлы с именем hibernate.cfg.xml или содержимым localhost: 1521: orcl

Проверьте путь к классам илипопробуйте явно поместить папку с файлом конфигурации, который вы хотите, первым в classpath.

Это также может быть случай, когда какая-то другая конфигурация переопределяет вашу конфигурацию, например, файл-источник данных или файл persistence.xml-файла.Проверьте их, если они у вас есть.

Как у вас работает приложение?Через тестовый пример, автономное консольное приложение, контейнер сервлета / j2ee?

0 голосов
/ 26 марта 2011

Попробуйте изменить эту строку в вашем конфигурационном файле.

<property name="hibernate.connection.url">jdbc:oracle:thin:@10.73.98.230:1521:orcl</property>

заменить // на @

Вы можете перейти по ссылке иметь информацию http://www.cryer.co.uk/brian/oracle/ORA12505.htm

Надеюсь, это поможет

0 голосов
/ 25 марта 2011

Невозможно понять SID "orcl".Может быть, SID присутствует на вашем "localhost", но не на сервере "10.73.98.230".убедитесь, что вы используете правильный SID, доступный на «10.73.98.230».

...