2011-12-04 5 views
1

私はHibernate 3.6.8を使用します。Hibernate注釈、@ JOincolumnの使用方法は外部キーを参照していますか?

CREATE TABLE UTILIZATION (
ID BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY 
... 
FK_WORKCATEGORY SMALLINT, 
CONSTRAINT PK_UTILIZATION PRIMARY KEY (ID)); 

CREATE TABLE DB2ADMIN.WORKCATEGORY(
ID SMALLINT NOT NULL, 
DESCRIPTION VARCHAR(50), 
CONSTRAINT PK_WORKCATEGORY PRIMARY KEY(ID)); 

ALTER TABLE UTILIZATION ADD FOREIGN KEY (FK_WORKCATEGORY) REFERENCES WORKCATEGORY(ID); 

私のPOJO:ここに私のテーブルである

@Entity 
@Proxy(proxyClass=IWorkCategory.class) 
@Table(name="WORKCATEGORY") 
public class WorkCategory extends BoBase implements Serializable, IWorkCategory{ 

    @Id 
    private Integer Id; 
    private String description; 

    @Override 
    public Serializable getId() { 
     return Id; 
    } 
    @Override 
    public void setId(Serializable id) { 
     Id = (Integer)id; 
    } 
    @Override 
    public String getDescription() { 
     return description; 
    } 
    @Override 
    public void setDescription(String description) { 
     this.description = description; 
    } 
} 

@Entity 
@Proxy(proxyClass=IUtilization.class) 
@Table(name="UTILIZATION") 
public class Utilization extends BoBase implements Serializable, IUtilization{ 

    @Id  
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private Long Id;  

    private WorkCategory workCategory; 


    @ManyToOne(fetch=FetchType.LAZY, targetEntity=WorkCategory.class) 
    @JoinColumn(name="FK_WORKCATEGORY", updatable=false, insertable=false) 
    public WorkCategory getWorkCategory() { 
     return workCategory; 
    } 


    public void setWorkCategory(WorkCategory workCategory) { 
     this.workCategory = workCategory; 
    } 
} 

私は、外部キーFK_WORKCATEGORYによってテーブルWorkCategoryを参照してください、しかしUtilization POJOでテーブルの使用状況を見ることができるように名前がworkCategoryのこのプロパティを宣言します。 Utilization bo = UtilizationDAO.get(new Long(123))の単体テストを実行すると、SQLが列UTILIZATIO0_で生成されます。 ワークショップFK_WORKCATEGORYの代わりに。 私はUtilization POJOで@JoinColumn(名前は=「FK_WORKCATEGORY」を入れているが、それは助けにはならない。 私はこのエラーを修正するために助けてください。事前に感謝。

答えて

5

あなたを入れているためだことむしろ@Idアノテーションがフィールドに置かれているので。フィールド上で置くよりもゲッターの注釈は、Hibernateはすべての注釈がフィールド上に存在するとみなします。

+3

あなたは –

+10

ええ、私は知っている;-) –

+0

こんにちはJB Nizet素晴らしいです、あなたは私を助けてくれますか?http://stackoverflow.com/questions/18895585/hibernate-version-annotation-and-object-references-an-unsaved-transient-instanc –

関連する問題