1

私は新しいテクノロジーを学ぼうとしているCDI + JPA + EJB + JTA + JSFので、サンプルプロジェクトをJBoss-Community--> jboss-as-kitchensink (Eclipse ジュノの JBoss から) からダウンロードしました。

をPostgreSQLデータベースに接続しようとしkitchenています: データベース名は :
sampledb

私のテーブル(メンバー)構造は:データベース名QUICKSTART_DATABASENAME

CREATE TABLE member
(
  id integer, 
  name text,
  email text,
  phone_number numeric
);

キッチン プロジェクトでこのファイルを編集しました。

persistence.xml

<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">
     <jta-data-source>java:jboss/datasources/PostgreSQLDS</jta-data-source>
      <properties>
         <!-- Properties for Hibernate -->
          <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
           <property name="hibernate.show_sql" value="true"/>

      </properties>
   </persistence-unit>
</persistence>

pom.xmlに依存関係を追加しました:

<!-- PostgreSQL Dependency -->
    <dependency>
        <groupId>postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.1-901.jdbc4</version>
    </dependency>

しかし、私はエラーが発生しています:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.554s
[INFO] Finished at: Sat Sep 21 14:01:48 IST 2013
[INFO] Final Memory: 20M/175M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.jboss.as.plugins:jboss-as-maven-plugin:7.2.Final:deploy (default-cli) on project jboss-as-kitchensink: Deployment f
ailed and was rolled back. -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
C:\Users\mypc\java\workspace\jboss-as-kitchensink>

データベースでこのアプリケーションを実行してデータを挿入できるようにするにはどうすればよいですか。

.javaファイルまたはファイル内のコードを変更して.xml機能させる必要はありますか?

コメント後に編集:このリンクをたどることにより、JBoss の standalone-full.xml ファイルをセットアップして、PostgreSQL を手動で JBoss に構成しました。

    ----///----    <datasources>
                        <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
                            <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
                            <driver>h2</driver>
                            <security>
                                <user-name>sa</user-name>
                                <password>sa</password>
                            </security>
                        </datasource>

                        <datasource jndi-name="java:jboss/datasources/PostgreSQLDS" pool-name="PostgreSQLpool" enabled="true" use-java-context="true">
                            <connection-url>jdbc:postgresql://localhost:5432/QUICKSTART_DATABASENAME</connection-url>
                            <driver>org.postgresql.Driver</driver>
                            <security>
                                <user-name>postgres</user-name>
                                <password>postgres</password>
                            </security>
                        </datasource>
                        <drivers>
                            <driver name="h2" module="com.h2database.h2">
                                <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                            </driver>

                            <driver name="postgresql" module="org.postgresql">
                                <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
                            </driver>
                        </drivers>
                    </datasources>
----////---

答え :

PostgreSQL ドライバーをインストールし、XML を使用して動作させることができます。

手順に従ってください : (によって提案された@Craig Ringer) は非常に HelpFull です

PgJDBC をダウンロードします。執筆時点での最新バージョンである postgresql-9.2-1003.jdbc4.jar を使用していると仮定しています。別のバージョンが必要な場合は、一致するようにファイル名を調整します。

JDBC ドライバーを deployments フォルダーに配置するか、jboss-cli で deploy コマンドを使用して、JBoss AS 7 にデプロイします。これは、すべてではありませんが、ほとんどの目的で機能します。

または、PostgreSQL JDBC ドライバー モジュールを定義します。

パス $JBOSS_HOME/modules/org/postgresql/main を作成します。modules/org 部分はすでに存在しているはずです。残りのディレクトリを作成します。

以下の内容の $JBOSS_HOME/modules/org/postgresql/main/modules.xml で、使用するドライバーを参照するように PgJDBC ドライバーの resource-root エントリを変更します。

 <?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.1" name="org.postgresql">
         <resources>
             <resource-root path="postgresql-9.2-1003.jdbc4.jar"/>
         </resources>
         <dependencies>
             <module name="javax.api"/>
             <module name="javax.transaction.api"/>
             <module name="javax.servlet.api" optional="true"/>
         </dependencies>
     </module>

Into the same directory as modules.xml place postgresql-9.2-1003.jdbc4.jar
Open jboss-cli by running $JBOSS_HOME/bin/jboss-cli --connect

次のコマンドを実行します。

/subsystem=datasources/jdbc-driver=postgresql-driver:add(driver-name=postgresql-driver, driver-class-name=org.postgresql.Driver, driver-module-name=org.postgresql)

postgresql-driver をドライバー名として使用して、必要なデータ ソースなどを作成します。

jboss-cli で data-source create コマンド (data-source --help、data-source add --help を参照) を使用するか、このような -ds.xml ファイルをデプロイすることで、Web UI を介してデータソースを作成できます。 :

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
  <datasource jndi-name="java:/datasources/PostgresqlDS" enabled="true" use-java-context="true"  
        pool-name="PostgresqlDS">
    <connection-url>jdbc:postgresql:dbname</connection-url>
    <driver>postgresql-driver</driver>
    <security>
      <user-name>username</user-name>
      <password>password</password>
    </security>
  </datasource>
</datasources>

KitchenSink の例: 私はこれらを試してみましたが、接続とすべてのものまで機能しました。それでも後で更新する必要があります...

データベースとユーザーを作成するまでこのリンクをたどって、ここから残りを続けてください! 永続化を次のように変更: persitance.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">
      <jta-data-source>java:jboss/datasources/KitchenQuickStartDS</jta-data-source>
      <properties>
         <!-- Properties for Hibernate -->
         <property name="hibernate.show_sql" value="true" />
      </properties>
   </persistence-unit>
</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">
      <jta-data-source>java:jboss/datasources/KitchensinkQuickstartTestDS</jta-data-source>
      <properties>
         <!-- Properties for Hibernate -->
         <property name="hibernate.hbm2ddl.auto" value="create-drop" />
         <property name="hibernate.show_sql" value="false" />
      </properties>
   </persistence-unit>
</persistence>

テスト ds.xml

<?xml version="1.0" encoding="UTF-8"?>
<datasources xmlns="http://www.jboss.org/ironjacamar/schema"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.jboss.org/ironjacamar/schema http://docs.jboss.org/ironjacamar/schema/datasources_1_0.xsd">
    <datasource jndi-name="java:jboss/datasources/KitchenQuickStartTestDS"
        pool-name="KitchenQuickStartTestDS" enabled="true"
        use-java-context="true">
      <connection-url>jdbc:postgresql://localhost:5432/QUICKSTART_DATABASENAME</connection-url>
        <driver>postgresql-driver</driver>
        <security>
            <user-name>username</user-name>
            <password>password</password>
        </security>
   </datasource>
</datasources>

kitchensink-quickstart-ds.xml

<?xml version="1.0" encoding="UTF-8"?>
<datasources xmlns="http://www.jboss.org/ironjacamar/schema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.jboss.org/ironjacamar/schema http://docs.jboss.org/ironjacamar/schema/datasources_1_0.xsd">
    <!-- The datasource is bound into JNDI at this location. We reference 
        this in META-INF/persistence.xml -->
    <datasource jndi-name="java:jboss/datasources/KitchenQuickStartDS"
        pool-name="KitchenQuickStartDS" enabled="true"
        use-java-context="true">
        <connection-url>jdbc:postgresql://localhost:5432/QUICKSTART_DATABASENAME</connection-url>
        <driver>postgresql-driver</driver>
        <security>
            <user-name>username</user-name>
            <password>password</password>
        </security>
    </datasource>
</datasources>

しかし、私が立ち往生している場所は次のとおり です。データベースにデータを挿入できません! としてエラーを発生させています

ERROR: relation "hibernate_sequence" does not exist Position: 17 

私はそれを設定するために助けが必要です..私は多くの方法で試しました

4

3 に答える 3

0

次のように発生するエラーの場合:ERROR: relation "hibernate_sequence" does not exist Position: 17

SEQUENCEによって提案されたように作成しました@Martin Nuc

データベースにシーケンスがあるかどうか、または\ds : Lists the Sequencesデータベースで使用されていないかどうかを確認するには。

CREATE SEQUENCE hibernate_sequence;

次に、次のようないくつかのエラーで発生しました->タイプキャストのようなもので、それらのエラーをクリアした後、それは機能しました! ついに :-)

Every1 のサポートに感謝します :)

于 2013-10-14T13:13:26.713 に答える
0

または、自動の代わりに @Generator を追加することもできます。シーケンスを追加して、PostGre で使用される ${table_name}_${pk}_seq であるシーケンス ジェネレーターを指定できます。

それにもかかわらず、これを行うことの 1 つの欠点は、アプリをシーケンスに密結合させることです。

別の戦略は、DDL を強制的に作成する場合、hibernate にその hibernate_sequence を作成させることです。

于 2013-12-05T22:13:37.230 に答える