在多对多关系中制作独特字段/表列的最佳方法Jpa

时间:2015-10-01 11:34:36

标签: java hibernate java-ee jpa jpa-2.0

我有一个“产品”和“标记”类ManyToMany关系。我从rss Feed获取产品和标签。一些标签名称与新产品条目重复(插入时),因为许多产品随附相同的标签名称。

我想让标签名称为UNIQUE。如果在添加产品时,标签已经存在,那么应该在该标签中添加产品(或者我应该说与该标签相关联),而是创建一个新的重复命名标签。

如果Tag不存在,则创建新标签并在那里添加产品。

例如,如果产品Feed有[产品1,代码[tag1,tag2,tag3]],[产品2,代码[tag7,tag5,tag1]]

如果添加了产品1,则会创建标记1,标记2,标记3。那么对于产品2,不应再创建标签1

问题:JPA中是否存在内置方式,或者每次都必须检查/ if else()/ getTagByName()并查看是否存在。

我有什么选择? 我更喜欢JPA选项(不是hibernate或ORM特定的)

    @Entity
    public class Product {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
        private String name;
        @ManyToMany (cascade = CascadeType.ALL, fetch = FetchType.LAZY )
        private List<Tag> tagList;
    //getters and setters
    }



    @Entity
    public class Tag {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
        private String name;
        @ManyToMany (mappedBy = "tagList", cascade = CascadeType.ALL, fetch = FetchType.LAZY )
        private List<ListItem> listItemList;
        @ManyToMany (mappedBy = "tagList", cascade = CascadeType.ALL, fetch = FetchType.LAZY )
        private List<Product> productList;
    //getters and setters
    }

0 个答案:

没有答案