2012-03-27 7 views
0

postgresqlに裏打ちされた4つのエンティティを持つアプリケーションがあります。私のIDフィールドに@GenerateValueアノテーションなしでアプリケーションを実行すると、テーブルはすべて正常に作成されますが、それを追加して起動すると、基本的には私の関係が存在しないという大規模なスタックトレースが得られます。@GenerateValueがエンティティに追加されたときに、Hibernateがテーブルを作成しないのはなぜですか?

そして、私はすべてのようだ:私はテーブルがされていることを実際に明らかである私の設定で正しい世代のものを、持っている

を「まあ当たり前あなたはそれらが存在することことになっています!」アノテーションがオフのときに生成されます。ここで

は私のエンティティの一部から一部変更されたコードです:

@Entity 
@Table(name = "MyClass",[email protected](columnNames={"name","parent"})) 
public class MyClass implements Serializable { 


@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
private int id; 
private String mapName = ""; 

@ManyToOne 
@JoinColumn(name = "parent_id") 
private MyParentClass parent; 

そして、それは親の:

@Entity 
@Table(name = "PARENT",[email protected](columnNames={"name"})) 
public class MyParentClass implements Serializable { 
static final long serialVersionUID = 1L; 

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
private int id; 

String name = ""; 

@OneToMany(mappedBy = "parent") 
@Cascade({ org.hibernate.annotations.CascadeType.ALL }) 
@LazyCollection(LazyCollectionOption.FALSE) 
private Set<MyClass> children = new HashSet<MyClass>(); 

私が何か間違ったこと、またはこれは、Hibernateに問題があるだろうか?

+0

スタックトレースを投稿できますか?あなたは春に休止状態を使用していますか? – ManuPK

答えて

1

スタックトレースがなければ、言うのは少し難しいですが、この唯一の問題ですが、

[email protected](columnNames={"name","parent"}) 

は間違っているようです。列がなく、代わりにmapNameとparent_idという名前の列があります。

+0

私はすべてのコードを入れていないからです。 – Link19

0

私の設定で間違った休止状態の方言があったという問題がありました。私がやっていることの多くを心配していたMYSQLに設定されました。私は警告を見ていませんでした。これが誰かのために起こった場合に備えて、これを維持する価値があります。

関連する問題