ORM - 使用整个对象或仅使用标识符作为JoinColumn?

时间:2015-11-06 10:22:21

标签: java spring hibernate orm

我有一个表/类User和Message。一个用户可以拥有许多消息。如何为Message建模Java类;它应该具有User类型的属性,还是只有用户名的字符串,这是该关系中的关键字?

当使用Hibernate生成类时,它为Message类提供了User属性。这是否意味着它是正确的方式?

我在创建消息时发现它有问题,同时也给它一个用户实例,因为我似乎无法在我正在使用的Spring网络流程中这样做(我只是传递了用户名)从视图)。

2 个答案:

答案 0 :(得分:0)

您可以使用OneToMany关系设计您的类,而Message类不需要具有用户字段。

例如:

public class User {
 @OneToMany
 private List<Message> messages;
}

public class Message {
 @Basic
 private String body;
}

在这种情况下,Message的数据库表将包含用户id的列。您可以使用JoinColumn

指定其他列
public class User {
 @OneToMany
 @JoinColumn(name="my_user_id_column")
 private List<Message> messages;
}

否则,您可以使用此answer

中的@JoinTable

答案 1 :(得分:0)

请观看此视频链接,解释hibernate bean类关系的简单方法@onetomany和@manytoone

https://www.youtube.com/watch?v=ujMOvdpg3jo