1

老实说,我对休眠和使用数据库进行编程还是很陌生...我试图将一些类似图形的结构保存到数据库中。

假设我有这样的 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 以这种方式表示图形是完全错误的方法?非常感谢任何帮助。

4

1 回答 1

0

我个人会选择生成的 ID 列,并且不会使用用户名。而是在数据库中对该名称列施加约束。

@Id 
@GeneratedValue(strategy=GenerationType.IDENTITY) 
@Column
private long id;

否则我看不出你的方法有什么问题。您在运行代码时是否遇到任何异常?

于 2013-05-09T19:41:55.030 回答