JPA oneToMany自我映射

时间:2014-09-24 14:13:36

标签: java hibernate jpa mapping one-to-many

我有一个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字段加入Category。 我尝试映射为:

    @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)的类别列表。

任何人都可以帮助我吗?

谢谢

卡罗

1 个答案:

答案 0 :(得分: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;