2011-10-26 14 views
0

私のコードをうまく動かすことができません。すべてを試しましたが、何も動作していないようです。アノテーションを使用して、型エラー、Hibernateを特定できませんでした。

マイコード:私は私のメインクラスを実行したときに私が得る 1 SpelerOpstelling.java

package model; 

import org.hibernate.annotations.Cascade; 

import javax.persistence.*; 

@Entity 
@Table(name = "SpelerOpstelling") 
public class SpelerOpstelling { 

private int SpelerOpstellingID; 
private char positie; 
private String functie; 
private Speler speler; 


public SpelerOpstelling() { 
} 

public SpelerOpstelling(char positie, String functie, Speler speler) { 
    this.positie = positie; 
    this.functie = functie; 
    this.speler = speler; 
} 


@Id 
@GeneratedValue (strategy=GenerationType.IDENTITY) 
@Column(name = "SpelerOpstelling_ID") 
    public int getSpelerOpstellingID() { 
    return SpelerOpstellingID; 
} 

public void setSpelerOpstellingID(int spelerOpstellingID) { 
    SpelerOpstellingID = spelerOpstellingID; 
} 



@Column(name = "functie", nullable = false, length = 100) 
    public String getFunctie() { 
    return functie; 
} 

public void setFunctie(String functie) { 
    this.functie = functie; 
} 



@Column(name= "positie") 
     public char getPositie() { 
    return positie; 
} 

public void setPositie(char positie) { 
    this.positie = positie; 
} 

@ManyToOne(cascade = CascadeType.ALL) 
@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE}) 
@JoinColumn(name = "Speler_ID") 
private Speler sp; 
public Speler getSpeler() { 
    return speler; 
} 

public void setSpeler(Speler speler) { 
    this.speler = speler; 
} 

}

Speler.java

package model; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import javax.persistence.Table; 

@Entity 
@Table(name = "Speler") 
public class Speler { 
    private int speler_ID; 
private String naam; 
private String adres; 
private String gemeente; 
private String telefoonnummer; 
private String fax; 
private String email; 

public Speler() { 
} 

public Speler(String naam, String adres, String gemeente, String fax, String telefoonnummer, String email) { 
    this.naam = naam; 
    this.adres = adres; 
    this.gemeente = gemeente; 
    this.fax = fax; 
    this.telefoonnummer = telefoonnummer; 
    this.email = email; 
} 



@Id 
@GeneratedValue 
@Column(name = "Speler_ID") 
    public int getSpeler_ID() { 
    return speler_ID; 
} 

public void setSpeler_ID(int speler_ID) { 
    this.speler_ID = speler_ID; 
} 


@Column(name = "naam", nullable = false, length=250) 
public String getNaam() { 
    return naam; 
} 

public void setNaam(String naam) { 
    this.naam = naam; 
} 



@Column(name = "adres", nullable = false, length=50) 
    public String getAdres() { 
    return adres; 
} 

public void setAdres(String adres) { 
    this.adres = adres; 
} 



@Column(name = "gemeente", nullable = false, length=50) 
    public String getGemeente() { 
    return gemeente; 
} 

public void setGemeente(String gemeente) { 
    this.gemeente = gemeente; 
} 

@Column(name = "fax", nullable = false, length=10) 


public String getFax() { 
    return fax; 
} 

public void setFax(String fax) { 
    this.fax = fax; 
} 

@Column(name = "telefoonnummer", nullable = false, length=10) 

public String getTelefoonnummer() { 
    return telefoonnummer; 
} 

public void setTelefoonnummer(String telefoonnummer) { 
    this.telefoonnummer = telefoonnummer; 
} 

@Column(name = "email", nullable = false, length=10) 

public String getEmail() { 
    return email; 
} 

public void setEmail(String email) { 
    this.email = email; 
} 

}

エラー、私は新しいSpelerを作成し、SpelerOpstellingを挿入してエラーを取得しようとしますそれは列のスピラーを見つけることができません..私はちょうど私のデータベースにSpelerのIDをしたいので、私は本当にこれについて混乱しています。

Initial SessionFactory creation failed.org.hibernate.MappingException: Could not determine type for: model.Speler, at table: SpelerOpstelling, for columns: [org.hibernate.mapping.Column(speler)] 
Exception in thread "main" java.lang.ExceptionInInitializerError 
    at persistence.HibernateUtil.<clinit>(HibernateUtil.java:17) 
    at model.Start.main(Start.java:38) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 
Caused by: org.hibernate.MappingException: Could not determine type for: model.Speler, at table: SpelerOpstelling, for columns: [org.hibernate.mapping.Column(speler)] 
    at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:306) 
    at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:290) 
    at org.hibernate.mapping.Property.isValid(Property.java:217) 
    at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:464) 
    at org.hibernate.mapping.RootClass.validate(RootClass.java:235) 
    at org.hibernate.cfg.Configuration.validate(Configuration.java:1362) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1865) 
    at persistence.HibernateUtil.<clinit>(HibernateUtil.java:12) 
    ... 6 more 

答えて

1

アノテーションをメソッドやフィールドにランダムに適用することはできません。通常は、@Idと同じ方法で注釈を適用する必要があります。クラスのあなたのケースでは

あなたはgetterメソッドへ@Idを適用SpelerOpstellingが、

@ManyToOne(cascade = CascadeType.ALL) 
@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE}) 
@JoinColumn(name = "Speler_ID") 
private Speler sp; 

はフィールドに適用されます。したがって、Hibernateはこのアノテーションを無視します。

だけだけでなくゲッターに適用する1行下のこれらの注釈を移動:

private Speler sp; 

@ManyToOne(cascade = CascadeType.ALL) 
@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE}) 
@JoinColumn(name = "Speler_ID") 
public Speler getSpeler() { 
    return speler; 
} 
+0

私はこれを行う場合、私はこのエラーを取得する:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:によって引き起こさ 不明カラム 'Speler_ID' in 'field list' – Yunieke

+0

少なくとも、マッピングが機能していることがわかります。両方のテーブルに 'Speler_ID'カラムがありますか? 1つはプライマリキーで、もう1つは外部キーです。 –

関連する問題