相关疑难解决方法(0)

单向和双向JPA和Hibernate关联有什么区别?

单向和双向关联有什么区别?

由于在db中生成的表都是相同的,因此我发现的唯一区别是双向关联的每一侧都将引用另一侧,而单向不引用.

这是一个单向关联

public class User {
    private int     id;
    private String  name;
    @ManyToOne
    @JoinColumn(
            name = "groupId")
    private Group   group;
}

public class Group {
    private int     id;
    private String  name;
}
Run Code Online (Sandbox Code Playgroud)

双向关联

public class User {
    private int     id;
    private String  name;
    @ManyToOne
    @JoinColumn(
            name = "groupId")
    private Group   group;
}
public class Group {
    private int         id;
    private String      name;
    @OneToMany(mappedBy="group")
    private List<User>  users;
}
Run Code Online (Sandbox Code Playgroud)

区别在于该组是否拥有用户的参考.

所以我想知道这是唯一的区别吗?哪个推荐?

java orm hibernate jpa associations

122
推荐指数
4
解决办法
10万
查看次数

Spring和/或Hibernate:在表单提交后从一方保存多对多关系

上下文

我有两个实体之间的简单关联 - CategoryEmail(NtoM).我正在尝试创建用于浏览和管理它们的Web界面.我有一个简单的电子邮件订阅编辑表单,其中包含表示给定电子邮件所属类别的复选框列表(我注册了Set<Category>类型的属性编辑器).

问题

表格显示效果很好,包括标记当前指定的类别(对于现有的电子邮件).但是没有更改保存到EmailsCategories表(NtoM映射表,定义的表@JoinTable- 既没有添加新检查的类别,也没有删除未选中的类别.

代码

邮件实体:

@Entity
@Table(name = "Emails")
public class Email
{
    @Id
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid2")
    @Column(length = User.UUID_LENGTH)
    protected UUID id;

    @NaturalId
    @Column(nullable = false)
    @NotEmpty
    @org.hibernate.validator.constraints.Email
    protected String name;

    @Column(nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    protected Date createdAt;

    @Column
    protected String realName;

    @Column(nullable = false)
    protected boolean isActive = true;

    @ManyToMany(mappedBy = "emails", fetch = FetchType.EAGER)
    protected Set<Category> categories = new HashSet<Category>(); …
Run Code Online (Sandbox Code Playgroud)

many-to-many hibernate jpa spring-mvc hibernate-mapping

9
推荐指数
1
解决办法
2万
查看次数