Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 双向映射正确吗?_Java_Hibernate - Fatal编程技术网

Java 双向映射正确吗?

Java 双向映射正确吗?,java,hibernate,Java,Hibernate,有人能告诉我这是否是双向映射的正确方法吗 class User { @OneToMany(cascade=CascadeType.ALL, mappedBy="user") private List<item> items; } class Item { @ManyToOne private User user; } 我是否必须将项目设置为用户,用户也必须将项目设置为用户 泰 是的,您的关系/映射已正确注释。删除项不会删除其关联的用户。删除用户将

有人能告诉我这是否是双向映射的正确方法吗

class User {
    @OneToMany(cascade=CascadeType.ALL, mappedBy="user")
    private List<item> items;
}


class Item {
    @ManyToOne
    private User user;
}
我是否必须将项目设置为用户,用户也必须将项目设置为用户

  • 是的,您的关系/映射已正确注释。删除
    不会删除其关联的
    用户
    。删除
    用户
    将删除与该用户关联的每个
    项目

  • 您不需要自己双向链接它们(尽管这样做没有坏处),至少在获取存储在数据库中的正确信息方面不需要。请注意,当数据库操作从
    用户
    级联到
    (反之亦然)时,您可能希望调用
    持久化(用户)
    ,而不是
    持久化(项)
    。只要您将
    项添加到
    用户
    中的列表中,它就会自动保留


  • 如果不希望删除它们,但希望保存它们,请使用CascadeType.PERSIST或MERGE

    User user = new User();
    Item item = new Item();
    
    user.getItems().add(item);
    item.setUser(user);
    persist(item);