2009-08-30 3 views
1

텍스트의 큰 벽 미안하지만, 그 대부분은 내 문제의 어떤 도움을심 2.2GA + 보스 AS 5.1GA + 포스트 그레스 8.4

들으를 기록

내가했습니다 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 괜찮 작동하지만 생성 - 엔티티를하려고 할 때, 나는 다음과 같은 얻을 ...입니다

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 번. 이 교차 데이터베이스 참조 란 무엇입니까? 이것에 대해

무엇 .. 솔기가 JDBC3 드라이버를 사용 주장 왜 JDBC4 드라이버를 사용하도록 build.properties에서 말한

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

문제 3 번, 나는 모른다. 이것을 어디에서 바꿀 수 있습니까?

내가 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 여기에 무슨 일이 일어나고 있습니까? 데이터베이스 간 참조?

내 문제의 도움.

답변

2

은 Seam 포럼 (herehere)에서 몇 가지 답변을 받았지만 후속 조치를 취하지 않았습니다. 어쨌든,이 모든 사실은 하나의 문제로 인해 발생 : PostgreSQL을 연결할 때

  1. 스튜어트 더글러스 told you, 당신은 카탈로그를 사용할 수 없습니다.

    ... 
    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 벌금을 사용할 수 있어야합니다 (나머지 가정 : 파일은 다음과 같이 보이도록, "hibernate.default_catalog.null="이 문제를 해결하려면 속성으로 파일을 사용자의 속성에서 속성 "hibernate.default_catalog=PostgreSQL을"대체 설정이 올바른지 확인하십시오). 세대를 깨끗한 폴더로 만드는 것이 좋습니다.

  2. 데이터베이스 간 참조는 쿼리가 둘 이상의 다른 데이터베이스에 액세스하려고하는 경우입니다. PostgreSQL은 이것을 지원하지 않으므로 테이블 이름에 1보다 많은 마침표가있을 때 불평하므로 PostgreSQL.atom.productsculturedetail에 굵은 부분은 제거해야합니다. Hibernate는 위의 단계 1에서 (카탈로그를 사용하지 말라고 알려줌으로써) 이미 고쳐 둔 기본 카탈로그를 사용하도록 지시 할 때이 접두사를 추가하므로 엔티티를 재생성 한 후에이 문제를 해결해야합니다.

    (이 효과적으로 스튜어트 더글러스는 당신이 당신의 엔티티 클래스에 주석의 catalog="PostgreSQL" 속성을 제거해야합니다, 당신을 말한 것과 동일합니다.)

  3. 는 특성 파일에 postgresql-8.4-701.jdbc4.jar 파일을 지정하는 경우 , 드라이버가 JDBC4를 지원한다는 의미는 아닙니다. 파일의 이름이 그렇게 암시 하긴하지만 드라이버 웹 사이트 clearly states that"드라이버는 JDBC 3 사양"을 합리적으로 완벽하게 구현합니다. 드라이버를 직접 사용하지 않으므로 (또는 최소한 가정하지 않아도 됨) 문제가 될 수 없습니다. 이 드라이버는 Hibernate가 요구 사항을 충족시키고 필요한 기능을 제공하기에 충분하다.

  4. 이 문제는 위의 동일한 문제로 인해 발생합니다. Hibernate는 잘못된 질의 때문에 데이터베이스로부터 데이터를 읽을 수 없다. 카탈로그 문제를 해결하면이 문제가 해결됩니다.