我有一个“产品”和“标记”类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
}