問題タブ [hbm2ddl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
818 参照

java - Hibernate HBM2DDL は主外部キーの null 許容フィールドを生成しますか?

hbm2ddl (hibernate3-maven-plugin 2.2 から) を使用して、JPA アノテーション付きエンティティに基づいて DDL を生成しています。通常、これは正常に機能しますが、最近、2 つの外部キーで構成される複合キーを使用するエンティティを導入したため、DDL 生成で問題が発生しています。

具体的には、生成される DDL は、主キー列が NULL 可能であることを指定しており、これは主キー列には当てはまりません。その結果、MSSQL は、列が NULL 可能であるため、主キー制約を作成できません。

エンティティはこちら

エンティティは、主キー クラスとして PricePK を使用すること、さらに重要なこととして、主キーを構成する 2 つの ManyToOne エンティティがオプションではないことを指定します (これは、列が DDL で「null でない」ことを意味する必要があります)。PricePK クラスは次のとおりです。

Price テーブル用に生成される DDL は次のとおりです。currency_id と product_id の両方が null を許可することに注意してください。

MSSql でスクリプトを実行しようとすると、次の (驚くべきことではありませんが) エラーが発生します。

失敗: テーブル store.PRICE の作成 (version int null, amount numeric(19,2) null, currency_id int null, product_id int null, primary key (currency_id, product_id)) テーブル 'PRICE' の null 許容列に PRIMARY KEY 制約を定義できません.

生成されている DDL がこれら 2 つの外部キー列に「null」を指定する理由は何ですか?

0 投票する
1 に答える
1547 参照

hibernate - hibernate.hbm2ddl.auto が create に設定されている場合、postgresql で必要に応じて hibernate に CREATE DATABASE を実行させるにはどうすればよいですか?

私はspring-roogwt、およびhibernateを使用して Web サイトを作成しています。インメモリデータベース HyperSonic を使用していますが、 postgresに切り替えようとしています。

jdbc3 ドライバーを使用した場合、すべて正常に動作します。唯一の問題は、作成するように設定してCREATE DATABASEテーブルを作成する前に、休止状態の外でステートメントを個別に実行する必要があることです。[hibernate.hbm2ddl.auto](http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html#configuration-optional)必要に応じて休止状態にするために設定できる別のオプションはCREATE DATABASEありますか?

0 投票する
1 に答える
1167 参照

hibernate - HibernateのTABLE_PER_CLASS継承を使用する場合、外部キーには乱数が追加されます

現在、ドメインモデルには次のものがあります。

HibernateのHBM2DDLは、このマッピング用に2つのテーブルを作成します:ItemAおよびItemB。どちらにもORG_ID列とテーブルへの外部キーがありOrganizationます。ただし、各外部キーには乱数が追加されます(つまり、FK_ITEM_ORG98343)。各テーブルが使用する外部キーを指定するにはどうすればよいですか?たとえば、とが必要FK_ITEMA_ORGですFK_ITEMB_ORG

アップデート

次の質問も参照してください。ForeignKeyアノテーションは、スキーマを生成するためにHBM2DDLによってのみ使用されますか?

0 投票する
2 に答える
1159 参照

hibernate - スキーマを生成するためにHBM2DDLによってのみForeignKey注釈が使用されますか?

TABLE_PER_CLASS 継承戦略を使用する場合に Hibernate が外部キー名を生成する方法に問題があります: Hibernate の TABLE_PER_CLASS 継承を使用する場合、外部キーに乱数が追加されます

したがって、注釈を次のように単純に置き換えることができるかどうか疑問に思っています。

そうすれば、生成された DDL に戻ってすべての CHANGEME を置き換える必要があることが常にわかります。@ForeignKeyHibernate は、私が認識していない属性を使用して何か他のことを行いますか、またはこれは良い回避策ですか?

0 投票する
1 に答える
1811 参照

java - スーパークラス テーブルのスキーマ生成をスキップする方法は? Java/JPA/休止状態/注釈/Maven/hbm2ddl

私たちのアプリケーションは、ローカルで実行されている別のアプリケーションと既存のデータベース テーブルを共有する必要があるため、このテーブルを参照したいのですが、そのための DDL の生成をスキップします。また、アプリケーションのスキーマでテーブルをエイリアスまたは MySQL マージ テーブルとして定義したいと考えていましたが、生成されたスキーマ スクリプトの前に実行される手動スクリプトにそれを追加できます。

shared_schema テーブルの create および alter table DDL が myapp-schema-ddl.sql 出力から省略されるように指定するにはどうすればよいですか?

commons/src/main/java/com/company/shared/SharedSuperEntity.java から:

myapp/src/main/java/com/company/shared/SharedSuperEntity.java から:

myapp/src/main/resources/META_INF/persistence.xml から:

myapp/pom.xml 内から:

0 投票する
2 に答える
21788 参照

hibernate - hbmddl.auto = create.drop でスキーマが削除されない

set を使用hbmddl.autoして hibernate 構成ファイルを作成し、それを使用してネットワーク モードでダービー データベースに接続しています (埋め込まれていないため、関連性があるかどうかはわかりません)。

これが私のhibernate.cfg.xml

しかし、これを使用している Java プログラム (別名サービス クラス) を実行すると、データベースを削除して再作成するようには見えません。コメントにあるように (休止状態の例から構成ファイルを取得しました)。

~~~~更新~~~~

次の動作に基づいて、hbm2ddl はスキーマを削除していないと結論付けました

次のような2つのクラスがあります

対応する休止状態の設定は

上記のクラスを次のように変更すると

以下がコンソールに出力されます

テーブルを手動で削除して再度実行すると、これは解消されるようです。この動作の原因は何ですか。

0 投票する
1 に答える
151 参照

maven - Maven: 複数のライフサイクルを呼び出す複数のプラグイン

私はかなり長い間 (何年も) maven を使用してきたので、これまでこの問題に遭遇したことがないこと、または少なくともそれに対処する方法があることは驚くべきことです...

次のプラグイン/ゴールを (指定された順序で) 呼び出そうとしています:

  1. sql-maven-plugin:execute
  2. hibernate3:hbm2ddl
  3. dbunit:操作
  4. 桟橋:実行

簡単に言えば、データベースを作成し、スキーマを生成し、データを挿入してから、Web アプリケーションを起動しています。ただし、hbm2ddl ゴールと jetty:run ゴールの両方が独自のライフサイクル フェーズを呼び出し (フォーク) するため、他のバインドされたプラグイン ゴールの一部が複数回実行されます。

これは明らかに私が望むものではありません。この問題を回避する方法はありますか?

ありがとう!!

0 投票する
3 に答える
6606 参照

hibernate - シーケンスの問題hbm2ddlでスキーマを生成するときに、2つのエンティティが同じシーケンスを共有しているのはなぜですか?

私はhbm2ddl休止状態ベースのアプリケーションでdbスキーマを生成するために使用しています。hibernate.hbm2ddl.autoプロパティの値はですcreate-drop

@EntityPOJOクラスにアノテーションを使用しています。

ただし、コードを実行すると、継続的に増分ID値を取得し続けます。たとえば、2つのテーブルの場合、ID(つまり、プリムキー)はそれぞれ1で始まる必要があります。ただし、にレコードを挿入した後Table 1、シーケンスは。の次の値から始まりますTable 2GenerationType.SEQUENCE表2の1から再開する必要があります。 &を試しGenerationType.AUTOました。何も機能しません:-(

0 投票する
1 に答える
590 参照

mysql - MyISAM エンジン用の SQL を生成するように hbm2ddl に指示するにはどうすればよいですか?

hbm2ddl コマンドを使用して JPA2 ベースのアノテーションから SQL を自動生成すると、ENGINE=InnoDB のテーブルが自動的に作成されます。

ENGINE=MyISAM の SQL を生成するには、JPA モデル クラスをどうすればよいですか?

0 投票する
1 に答える
11247 参照

hibernate - JPA アノテーションを使用して特定の長さの整数を指定するにはどうすればよいですか

id を「INTEGER」と宣言する代わりに、上記のように長さ制限を指定したいと思います。

私が使う

@Entity クラス Foo {

... }

hbm2ddl が要件に従ってスキーマを自動的に生成するように、JPA モデル クラスで長さ制限を指定するにはどうすればよいですか。