对于hibernate和数据库编程来说,我是个新手,说实话...... 我试图将一些类似图形的结构保存到数据库中。
假设我有这样的Java类:
public class User {
@OneToMany(cascade=CascadeType.ALL)
private Collection<User> followers = new ArrayList<>();
@OneToMany(cascade=CascadeType.ALL)
private Collection<User> friends = new ArrayList<>();
@Id
private String name;
.....
}
问题是我想使用Hibernate将其保存到PostgeSQL数据库。但是我发现它非常重要。例如,一个问题是: 假设我这样做:
User user1 = new User("user1");
User user2 = new User("user2");
user1.getFollowers().add(user2);
user1.getFriends().add(user2);
现在,如果我在user1对象上进行合并,则会出现密钥唯一性约束问题。我想知道这是否是问题,因为我错误配置了Hibernate注释以保存我的结构,或者使用Hibernate以这种方式表示图形是完全错误的方法?任何帮助非常感谢。
答案 0 :(得分:0)
就个人而言,我会选择生成的ID列,并且不会使用该用户的名称。相反,在数据库中对该名称列设置约束。
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column
private long id;
否则我看不出你的方法有什么问题。运行代码时是否有任何异常?