1

我正在为我的项目使用 struts2 、 hibernate 和 MySql 。我有包含课程代码的 42 列(所有长数据类型)的表名 TimeTable。我想从特定行搜索具有特定课程代码的“列名”。请帮帮我。

4

1 回答 1

1

如果您在休眠中以“正确”的方式映射实体,答案很明显:

您将拥有一个名为 TimeTable 的实体,它与 Course 有 42 个关系(我敢打赌,属性名称将是 course1、course2.... course42)。

生成的 HQL 只是一堆 OR

from TimeTable t
where t.course1.code = :something 
  OR t.course2.code = :something .....

然而,这显然是一个糟糕的模型设计。您应该将 Timetable 和 Course 设置为多对多关系,并使用另一个表来存储该关系。所以,在实体中,你会看到类似

class TimeTable {
    @ManyToMany
    private List<Course> courses;
}

有了这样的设计,你的生活会轻松很多。

于 2012-07-30T03:07:52.850 回答