【发布时间】:2011-10-31 18:08:07
【问题描述】:
(下面的简化示例)
我正在尝试用 2 个数据库表映射一个 POJO 类,并创建一个 OneToMany 关联。下面是这个类的样子..
@Entity
@Table(name = "external_data")
@SecondaryTable(name = "external_data_hierarchy")
public class ExternalData {
private int externalDataId;
@OneToMany(fetch = FetchType.LAZY)
@JoinTable(name = "external_data_hierarchy")
@JoinColumn(name = "external_data_parent_id")
private List<ExternalData> children;
..
}
这是表格..
mysql> desc external_data;
+------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+----------------+
| external_data_id | int(11) | NO | PRI | NULL | auto_increment |
+------------------+--------------+------+-----+---------+----------------+
5 rows in set (0.06 sec)
mysql> desc external_data_hierarchy;
+----------------------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------------+---------+------+-----+---------+----------------+
| external_data_hierarchy_id | int(11) | NO | PRI | NULL | auto_increment |
| external_data_parent_id | int(11) | YES | MUL | NULL | |
| external_data_child_id | int(11) | YES | MUL | NULL | |
+----------------------------+---------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
Note: "external_data_parent_id" and "external_data_child_id" columns refer external_data.external_data_id column.
如您所知,我正在尝试将父子关系存储在不同的表中。 现在,当我在 ExternalData 上尝试 create() 而不设置子项时,它可以工作。 当我尝试使用 ExternalData.getChildren() 获取此创建的数据时,出现以下异常..
[main] WARN in [org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:100)] - SQL Error: 1054, SQLState: 42S22
[main] ERROR in [org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:101)] - Unknown column 'externalda0_1_.external_data_id' in 'on clause'
我做错了什么?
【问题讨论】:
-
为代码 sn-p 添加了@OneToMany。在编写描述时遗漏了它。
标签: hibernate orm hibernate-mapping