2014-09-24 2 views
0

я есть JPA объект отображается как:JPA oneToMany само отображение

@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 

Я хочу, чтобы отобразить свою категорию Entity, чтобы получить список категорий с одинаковым SMART_CODE (SmartList).

Может ли кто-нибудь мне помочь?

Благодаря

Carlo

+3

'но это не works' , можете ли вы добавить более подробную информацию о том, что не работает? Любые исключения? – Chaitanya

+0

JPA пытается найти категорию, используя smart_code как id. Мне нужен запрос вроде: smartList = select c из категории c где c.smartCode =? для каждой категории – carlj

+0

, пожалуйста, добавьте то, что вы хотели сделать в своем посте. – Chaitanya

ответ

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;