2014-09-24 186 views
0

我有一個JPA實體映射爲:JPA一對多自映射

@Entity 
@Table(name = "CATEGORIES") 
public class Category { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "ID_CATEGORY") 
    private int idCategory; 

    @Column(name = "POSITION") 
    private int position; 

    @Column(name = "SEO_VALUE") 
    private String seoValue; 

    @Column(name = "VALUE") 
    private String value; 

    @Column(name = "DESCRIPTION") 
    private String description;   

    @Column(name = "SMART_CODE") 
    private String smartCode; 

我需要加入分類與自己使用SMART_CODE場。 我試圖映射爲:

@OneToMany(mappedBy="smartCategory") 
    private List<Category> smartList = new ArrayList<Category>(); 

    @ManyToOne 
    @JoinColumn(name="SMART_CODE", referencedColumnName="SMART_CODE",insertable=false,   updatable=false) 
    private Category smartCategory; 

但它不起作用。

我有一個表有SMART_CODE字段的類別。 的SMART_CODE用於連接記錄的表裏面,如:

idCategory .. ... ... .. SMART_CODE 

    1   .. ... ... .. 2000034 
    2   .. ... ... .. 2000034 
    ................................. 
    100  .. ... ... .. 2000034 

我要地圖我類別實體來獲得與同SMART_CODE(SmartList的)的類別列表。

任何人都可以幫助我嗎?

感謝

卡羅

+3

'但它並不works' ,你可以添加更多關於什麼不起作用的細節嗎?任何例外? – Chaitanya 2014-09-24 15:31:58

+0

JPA嘗試使用smart_code作爲id來查找類別。我想要一個查詢,如:smartList =從類別c中選擇c其中c.smartCode =?對於每個類別 – carlj 2014-09-26 09:03:54

+0

請在您的帖子中明確添加您想要做的事情。 – Chaitanya 2014-09-26 09:32:25

回答

0

我看準線以下

@ManyToOne 
    @JoinColumn(name="SMART_CODE", referencedColumnName="SMART_CODE",insertable=false,   updatable=false) 
    private Category smartCategory; 

的東西,而不是將其更改爲以下

@ManyToOne(cascade=CascadeType.ALL) 
    @JoinColumn(name="SMART_CODE",nullable=true) 
    private Category smartCategory;