2011-11-25 99 views
0

Licitatie實體:Java的JPA - 實體之間的關係OneToOne不工作

@Entity 
@Table(name="licitatie") 
public class Licitatie implements Serializable { 
    ... 

    //bi-directional one-to-one association to Licitatie 
    @OneToOne(mappedBy="licitatie") 
    private Produs produs; 

    ... 
} 

Produs實體:

@Entity 
@Table(name="produs") 
//@DiscriminatorColumn(name="id", discriminatorType=DiscriminatorType.INTEGER) 
@MappedSuperclass 
public class Produs implements Serializable { 
    ... 

    //bi-directional one-to-one association to Produs 
    @OneToOne 
    @JoinColumn(name="licitatie_id") 
    private Licitatie licitatie; 

    ... 
} 

數據庫:

Licitatie:

id start status 
1 5 open 
2 5 open 
3 5 open 

Produs:

id licitatie_id DTYPE description 
1 1   Carte ... 
2 2   Carte ... 
3 3   Carte ... 

後我運行三查詢:「SELECT噸FROM Licitatie噸」,從類型的對象屬性產品Licitatie爲空。但是表格中有記錄。

我在做什麼錯了?

*編輯*

後,我從表中的數據,調用getProdus()返回此消息:

{IndirectSet:不實例}

+0

你可能想看看嵌入式註釋... – Mechkov

+0

我認爲沒有錯,除了MappedSuperClass註解。你確定**每**合法都有自己的產品(因爲查詢從數據庫返回每一個合法)?在licitatie_id列中是否存在唯一約束?什麼是JPA引擎? –

+0

我相信每個「合法」只有一個「produs」記錄。 – Emanuel

回答

0

解決

我已經將列PRODUS_ID添加到licitati電子表格。

Licitatie:ID produs_id ... Produs:ID,licitatie_id ...