【问题标题】:How can i add duplicate items to an entity which is mapped(OneToMany) to another entity class while using spring mvc and Hibernate如何在使用spring mvc和Hibernate时将重复项添加到映射(OneToMany)到另一个实体类的实体
【发布时间】:2014-11-19 12:37:12
【问题描述】:

我有一个实体“用户”,它是 OneToMany 映射到另一个实体“项目”。项目列表成功添加,直到项目不重复。如何向用户添加重复项。

在用户实体中

@OneToMany(mappedBy="user") 
private List<Item> item;

//getters and setters

在项目实体中

@ManyToOne(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
@JoinTable(
        name="UserItem",
        joinColumns= @JoinColumn(name="ITEM_ID"),
        inverseJoinColumns = @JoinColumn(name="USER_ID")
)
private User user;

//getters and setters

我在服务类中将项目添加到用户的函数

public void addItemToUser(Integer userId,Integer itemId){
    Session session = sessionFactory.getCurrentSession();
    Item item2 = (Item)session.get(Item.class,itemId);
    // session.save(item2);
    User user2 = (User)session.get(User.class,userId);
    user2.getItem().add(item2);

    session.save(user2);
}

如何向用户添加重复项目。我是春天和冬眠的新手

【问题讨论】:

  • 正如您在 List 上给出的 mappedBy 说它是关系的反面。因此,为了有两种方式的单向关系,请删除该 mappedBy 属性并放入 cascade="CascadeType.ALL"。否则每次保存项目和用户将自动更新,因为项目类拥有关系。

标签: spring hibernate spring-mvc hibernate-mapping hibernate-onetomany


【解决方案1】:

检查您是否真的需要使用 CascadeType.ALL 而不是 Cascade.SaveUpdate。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-14
    • 2014-12-29
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    相关资源
    最近更新 更多