1

テキストの大きな壁で申し訳ありませんが、ほとんどがログです

私の問題の助けを借りてThx

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-entities を試すと、次のようになります...

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 ドライバーを使用するように言いましたが、なぜ seam が JDBC3 ドライバーを使用することを主張するのかわかりません。これはどこで変更できますか?

http://localhost:5443/Commerceにアクセスして、自動生成された CRUD UI を参照しようとすると。

このエラーが発生します.com.atom.Commerce.action.ProductsList_$$_javassist_seam_2 型の「resultList」の読み取りエラー

そして、これは私のサーバーログに表示されているものです...

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 ここで何が起こっているのか? クロスデータベース参照?

私の問題で何か助けてくれてありがとう。

4

1 に答える 1

2

Seam フォーラム (ここここ) でいくつかの回答を受け取りましが、フォローアップしませんでした。とにかく、これらすべては実際には 1 つの問題によって引き起こされます。

  1. Stuart Douglasが言ったように、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. クロスデータベース参照とは、クエリが 2 つ以上の異なるデータベースにアクセスしようとする場合です。PostgreSQL はこれをサポートしていないため、テーブル名に複数のピリオドがあるとエラーが発生するため、 の太字部分を削除する必要があります。デフォルトのカタログを使用するように指示すると、Hibernate はこのプレフィックスを追加します。これは、上記の手順 1 で (カタログを使用しないように指示することによって) 既に修正されているため、エンティティを再生成した後にこの問題を修正する必要があります。PostgreSQL.atom.productsculturedetail

    (これは Stuart Douglas が言ったことと事実上同じであることに注意してcatalog="PostgreSQL"ください。エンティティ クラスの注釈で属性を削除する必要があります。)

  3. postgresql-8.4-701.jdbc4.jarプロパティ ファイルでファイルを指定した場合、これはドライバーが JDBC4 をサポートすることを意味しませんでした。ファイルの名前はそのように示唆していますが、ドライバーの Web サイトには、「ドライバーは、 JDBC 3仕様の合理的に完全な実装を提供します」と明確に記載 されています。ドライバーを直接使用していないため (または、少なくとも使用することを想定していないため)、これは問題にはなりません。このドライバーは、Hibernate がその要件を満たし、必要な機能を提供するのに十分です。

  4. この問題は、上記と同じ問題が原因で発生します。クエリが正しくないため、Hibernate はデータベースからデータを読み取ることができません。カタログの問題を修正すると、この問題が修正されるはずです。

于 2009-09-08T09:57:33.963 に答える