【发布时间】:2011-01-18 00:42:09
【问题描述】:
假设我有对应于Posts 和Users 的域对象。不过,我有相应的数据库表,其中包含与“帖子”和“用户”相关的信息。
目前我已经在 Hibernate 中正确设置了映射,以便我可以从“帖子”表中提取信息并将其保存为 Post 对象。但是,我随后在我的Posts 域对象中添加了对User 对象的引用(这样每个帖子都可以有一个对应的User 对象)。
在我的数据库结构中,“posts”表有一个 user_id 列,它是“users”表的外键。
我的问题是:在我的 DAO 中查询“posts”表时,我是否必须加入“users”表,然后以某种方式将返回的用户数据转换为 User 对象?或者我可以简单地保留我的查询(即只查询“posts”表),并以某种方式添加一个休眠映射,以便填充Posts 表中的User 属性? (我想我想知道如果我正确设置映射,Hibernate 是否可以自动为我生成连接 - 示例也很棒!)
谢谢,我希望我已经足够清楚了。
更新:澄清一下,这里有一些代码 sn-ps:
我的帖子对象:
public class Posts {
private String title;
...
private User user;
//getters and setters here
}
我的帖子表列:
post_id (primary key)
title
...
user_id (foreign key into User table)
我的映射(不考虑 User 属性)目前如下所示:
<class name="com...Post" table="post">
<id name="pId" column="post_id" />
<property name="title" column="title" type="java.lang.String" />
...
<!-- Need to add mapping here to join with user table?? -->
</class>
所以基本上,我的 DAO 当前获取一个没有 private User user 属性的 Post 对象(因为我刚刚添加了这个)。我的问题是如何在 Post 对象中填充该属性(以便获取的 Post 对象也包含一个 User 对象)?
对不起,如果当前的帖子已经回答了这个问题......他们只是让我有点困惑......
【问题讨论】:
标签: java hibernate spring join