0

我有一个关于 Hibernate 对象和使用它的 In Spring MVC Framework 的问题。我有两个对象:ManyToOne 关系中的类别和语言:

@ManyToOne
@JoinColumn(name="language_id")
public Language getLanguage() {
return language;
}

我想创建操作,它使用所选语言创建新类别。我的表格如下所示:

<form:form modelAttribute="addCategory" name="frm" method="post">

<form:select path="language.id">
<form:options items="${languages}" itemValue="id" itemLabel="name" />
</form:select>

//Other Fields like name etc.

</form:form>

在控制器 POST 方法中,我有:

@RequestMapping(method = RequestMethod.POST, value="/add_category")
public String addCategory(Category category){
//code for save, redirect etc.
}

假设我选择一种 ID = 4 且名称为“English”的语言,该语言存在于数据库中。当我想在metod addCategory 中显示语言ID(通过category.getLanguage().geiId())时,我的 ID = 4 正确,但是当我想通过category.getLanguage().getName()显示选择的语言名称时,我有无效的。

这可能是因为 Spring 对象类别对 Hibernate 中的关系一无所知。我使用 Hibernate 4、Spring 3,并使用 Spring Bean SessionFactory 连接到 Hibernate。

在 Spring 请求中是否有可能获得完整的递归对象?换句话说:类别中的语言(category.getLanguage())将是 ID = 4 且名称为“English”的完整对象的情况。

谢谢。

4

1 回答 1

0

我有疑问为什么您需要在类别对象的语言对象中填写名称。因为当您尝试将类别对象存储在数据库中时,它只会被hibernate用作参考目的。

当您使用 hibernate 从数据库中获取类别对象时,它将返回包含具有 id 和值的语言对象的对象。

尽管如此,如果您无论如何都想显示名称,那么您需要使用从用户选择的jsp页面获取的ID来获取名称。然后将该名称设置在存储在您的类别对象中的对象中。否则,您需要在 jsp 中拥有另一个字段path="language.name"

希望这对您有所帮助。干杯。

于 2012-06-09T09:53:56.930 回答