[解決済み] JPAアノテーションで複数列の制約を導入するには?
2023-01-04 04:24:50
質問
JPAにマッピングされたエンティティにマルチキー制約を導入しようとしています。
public class InventoryItem {
@Id
private Long id;
@Version
private Long version;
@ManyToOne
@JoinColumn("productId")
private Product product;
@Column(nullable=false);
private long serial;
}
基本的に(product, serial)のペアはユニークであるべきですが、シリアルがユニークであるべきという方法しか見つけられませんでした。 異なる製品が同じシリアル番号を持つかもしれないので、これは明らかに良いアイデアではありません。
この制約をJPA経由で生成する方法はありますか、それともDBに手動で作成することを余儀なくされますか。
どのように解決するのですか?
一意制約を宣言するには
@Table(uniqueConstraints = ...)
アノテーションを使用して一意制約を宣言することができます。
@Entity
@Table(uniqueConstraints={
@UniqueConstraint(columnNames = {"productId", "serial"})
})
public class InventoryItem {
...
}
これは魔法のようにデータベースに一意制約を作成するわけではないことに注意してください。しかし、JPAエンティティ定義に基づいてデータベースを作成するために、ある種の自動化ツールを使用しているように思われます。
関連
-
Springの設定でxsdファイルのバージョン番号を設定しない方が良い理由
-
プロジェクトの依存関係を解決できない。
-
Javaジェネリックを1つの記事で
-
セミコロン期待値エラー解決
-
Javaがリソースリークに遭遇した:'input'が閉じない 解決方法
-
代入の左辺は変数でなければならない 解答
-
Java基礎 - マッピングとQ/A
-
linux ant Resolve error: main class not found or couldn't be loaded org.apache.tools.ant.launcher.
-
CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ブートレイヤーの初期化中にエラーが発生しました java.lang.module.FindException: モジュールが見つかりません
-
Git Pull Failed マージされていないファイルがあるため、Pull できません。
-
Jsoup-Crawlingの動作
-
unsigned char* から const jbyte* {aka const signed char*} への変換が無効です。
-
無効なメソッド宣言
-
Javaがテキストファイルを読み込む
-
XXX型を囲むインスタンスがJavaでアクセスできない
-
org.xml.sax.SAXParseExceptionのエラー解決方法
-
linux ant Resolve error: main class not found or couldn't be loaded org.apache.tools.ant.launcher.
-
Zipファイルの圧縮・解凍にantを使用する