Шов 2.2GA + JBoss AS 5.1GA + Postgres 8.4 - PullRequest
1 голос
/ 30 августа 2009

Извините за большую стену текста, но в основном это бревна

Спасибо за любую помощь в любых моих проблемах

Я пытался получить помощь от форумов Seam, но тщетно.

Я пробую эту настройку, упомянутую в названии, но безуспешно.

У меня все установлено правильно, и проблемы начинаются с seam-gen.

Это мои build.properties

#Generated by seam setup
#Sat Aug 29 19:12:18 BRT 2009
hibernate.connection.password=abc123
workspace.home=/home/rgoytacaz/workspace
hibernate.connection.dataSource_class=org.postgresql.ds.PGConnectionPoolDataSource
model.package=com.atom.Commerce.model
hibernate.default_catalog=PostgreSQL
driver.jar=/home/rgoytacaz/postgresql-8.4-701.jdbc4.jar
action.package=com.atom.Commerce.action
test.package=com.atom.Commerce.test
database.type=postgres
richfaces.skin=glassX
glassfish.domain=domain1
hibernate.default_schema=Core
database.drop=n
project.name=Commerce
hibernate.connection.username=postgres
glassfish.home=C\:/Program Files/glassfish-v2.1
hibernate.connection.driver_class=org.postgresql.Driver
hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider
jboss.domain=default
project.type=ear
icefaces.home=
database.exists=y
jboss.home=/srv/jboss-5.1.0.GA
driver.license.jar=
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
hibernate.connection.url=jdbc\:postgresql\:Atom
icefaces=n

. / Seam create-project работает нормально, но когда я пытаюсь создать generate-entity, я получаю следующее ...

generate-model:
     [echo] Reverse engineering database using JDBC driver /home/rgoytacaz/postgresql-8.4-701.jdbc4.jar
     [echo] project=/home/rgoytacaz/workspace/Commerce
     [echo] model=com.atom.Commerce.model
[hibernate] Executing Hibernate Tool with a JDBC Configuration (for reverse engineering)
[hibernate] 1. task: hbm2java (Generates a set of .java files)
[hibernate] log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
[hibernate] log4j:WARN Please initialize the log4j system properly.
[javaformatter] Java formatting of 4 files completed. Skipped 0 file(s).

это проблема № 1. Как это исправить? Что это? Я должен был сделать это в затмении. Сработало.

Затем я импортирую созданный seam-gen проект в eclipse и развертываю в JBoss 5.1. Пока мои серверы запускаются, я заметил следующее ..

03:18:56,405 ERROR [SchemaUpdate] Unsuccessful: alter table PostgreSQL.atom.productsculturedetail add constraint FKBD5D849BC0A26E19 foreign key (culture_Id) references PostgreSQL.atom.cultures
03:18:56,406 ERROR [SchemaUpdate] ERROR: cross-database references are not implemented: "postgresql.atom.productsculturedetail"
03:18:56,407 ERROR [SchemaUpdate] Unsuccessful: alter table PostgreSQL.atom.productsculturedetail add constraint FKBD5D849BFFFC9417 foreign key (product_Id) references PostgreSQL.atom.products
03:18:56,408 ERROR [SchemaUpdate] ERROR: cross-database references are not implemented: "postgresql.atom.productsculturedetail"*
03:18:56,408 INFO  [SchemaUpdate] schema update complete

Проблема № 2. Что это за кросс-базы данных?

Как насчет этого ..

03:18:55,089 INFO  [SettingsFactory] JDBC driver: PostgreSQL Native Driver, version: PostgreSQL 8.4 JDBC3 (build 701)

Проблема № 3 Я сказал в build.properties для использования драйвера JDBC4, я не знаю, почему шов настаивает на использовании драйвера JDBC3. Где я могу это изменить?

Когда я захожу в http://localhost:5443/Commerce и пытаюсь просмотреть автоматически сгенерированный пользовательский интерфейс CRUD.

Я получаю эту ошибку .. Ошибка чтения 'resultList' по типу com.atom.Commerce.action.ProductsList _ $$ _ javassist_seam_2

И это то, что отображается в журналах моего сервера ...

03:34:00,828 INFO  [STDOUT] Hibernate: 
    select
        products0_.product_Id as product1_0_,
        products0_.active as active0_ 
    from
        PostgreSQL.atom.products products0_ limit ?
03:34:00,848 WARN  [JDBCExceptionReporter] SQL Error: 0, SQLState: 0A000
03:34:00,849 ERROR [JDBCExceptionReporter] ERROR: cross-database references are not implemented: "postgresql.atom.products"
  Position: 81
03:34:00,871 SEVERE [viewhandler] Error Rendering View[/ProductsList.xhtml]
javax.el.ELException: /ProductsList.xhtml: Error reading 'resultList' on type com.atom.Commerce.action.ProductsList_$$_javassist_seam_2
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not execute query

Проблема № 4 Что здесь происходит? Кросс-базы данных?

Спасибо за любую помощь в любых моих проблемах.

1 Ответ

2 голосов
/ 08 сентября 2009

Вы сделали получили несколько ответов на форумах Seam ( здесь и здесь ), но вы не подписались. Во всяком случае, все это на самом деле вызвано одной проблемой:

  1. Как сказал вам Стюарт Дуглас , вам не следует использовать каталог при подключении к PostgreSQL. Чтобы это исправить, замените свойство "hibernate.default_catalog=PostgreSQL" в файле свойств на свойство: "hibernate.default_catalog.null=", чтобы ваш файл выглядел следующим образом:

    ...
    model.package=com.atom.Commerce.model
    hibernate.default_catalog.null=      # <-- This is the replaced property
    driver.jar=/home/rgoytacaz/postgresql-8.4-701.jdbc4.jar
    ...
    

    После этого вы сможете использовать seam generate-entities штраф (при условии, что остальная часть вашей конфигурации верна). Я бы порекомендовал сделать генерацию в чистую папку.

  2. Перекрестные ссылки на базы данных - это когда запрос пытается получить доступ к двум или более различным базам данных. PostgreSQL не поддерживает это и поэтому жалуется, когда в имени таблицы более 1 периода, поэтому в PostgreSQL.atom.productsculturedetail полужирная часть должна быть удалена. Hibernate добавляет этот префикс, когда вы указываете ему использовать каталог по умолчанию, который мы уже исправили на шаге 1 выше (указав, что он не должен использовать каталог), поэтому эту проблему следует исправить после восстановления ваших сущностей.

    (Обратите внимание, что это фактически то же самое, что сказал вам Стюарт Дуглас, что вы должны удалить атрибут catalog="PostgreSQL" в аннотациях ваших классов сущностей.)

  3. Когда вы указали файл postgresql-8.4-701.jdbc4.jar в файле свойств, это не означало, что драйвер поддерживает JDBC4. Несмотря на то, что название файла может указывать на это, на веб-сайте драйвера четко указано, что "Драйвер обеспечивает достаточно полную реализацию спецификации JDBC 3 " . Это не должно быть проблемой для вас, так как вы не используете драйвер напрямую (или, по крайней мере, не должны). Драйвер достаточен для Hibernate, чтобы выполнить его требования и обеспечить требуемую функциональность.

  4. Эта проблема вызвана той же самой проблемой выше. Hibernate не может прочитать данные из базы данных из-за неправильного запроса. Исправление проблемы каталога должно решить эту проблему.

...