2016-07-20 8 views
0

に制約を追加することはできません:利用休止状態注釈:私は注釈を休止状態使用してデータBeanを経由してMySQLのテーブルに制約を追加しようとするMySQLのテーブル

package databean; 

import javax.persistence.*; 

@Entity 
@Table(name = "ADMIN", 
     uniqueConstraints = { 
       @UniqueConstraint(columnNames = "userName"), 
       @UniqueConstraint(columnNames = "email") 
     }) 
public class AdminBean { 
     // Private fields 

     @Id @GeneratedValue 
     @Column(name = "adminId") 
     private int adminId; // PK 

     @Column(name = "userName") 
     private String userName; 

私もマッピング用の2つのxmlファイルを持っている:hibernate.cfg.xmlのそしてAdmin.hbm.xml

1) マッピング資源= "休止/ Admin.hbm.xml"/

2)

オンラインで見つかったことによると: "これまでのところ、HibernateがPOJOからデータベーステーブルへのデータの変換にXMLマッピングファイルを使用する方法を見てきました。 Hibernateアノテーションは、XMLファイルを使用せずにマッピングを定義する最新の方法です。アノテーションは、XMLマッピングメタデータに加えて、またはその代わりに使用できます。 Hibernate Annotationsは、オブジェクトおよびリレーショナルテーブルのマッピングにメタデータを提供する強力な方法です。すべてのメタデータは、POJO javaファイルの中にコードとともに格納されており、開発中にテーブル構造とPOJOを同時に理解するのに役立ちます。」(http://www.tutorialspoint.com/hibernate/hibernate_annotations.htm

xmlファイルのマッピングをコメントアウトすると、 「不明なエンティティ:databean.AdminBean」の例外が。今でもdatabeanは見つかりません

質問:。

1)休止状態の注釈付きdatabeanはXMLでマッピングができない場合でも動作しないべきファイル?(それでは動作しません...)

2)databeanで休止状態の注釈がない場合は、制約をXMLマッピングファイルに直接追加する必要がありますか?

3)MySQLテーブルに制約を追加する最良の方法は何ですか?アプリケーションを実行すると、これらはすべて自動的に作成されるため、mySQLで最初に手動でテーブルを作成することによって制約を加えることは意味がありません。

4)がdatabeanはと(多分)xmlファイルの両方に制約を追加することが本当に必要ですか?

アップデート:私は、XMLファイルのプロパティを設定しようとすると、

がさえ、MySQLデータベースは依然として重複項目を追加することができますし、テーブルの「制約をキャッチ」することはできないようです。

今、私は他の部分はかなりうまく機能することができても、それは...私はこれらの制約を追加する方法に問題があるが、よりMySQLのテーブルと私のコードで「切断」のようにしない場合があります疑います。誰も前に同様の状況に直面していますか?

答えて

0

私は理由を見つける:それは最初に私のアプリによって自動的に作成されたときに追加何ら制約がない場合、私は前の表をドロップしませんでした。誰も同じミスを犯してはいけないと思います。 :)

関連する問題