【发布时间】:2014-01-20 15:14:52
【问题描述】:
好的,所以在数据库中我们有一个名为 distributionCompanies 的表,创建方式如下:
CREATE TABLE `distributionCompanies` (
`distributionCompanyID` INT(11) NOT NULL,
`distributionCompanyName` VARCHAR(255) NOT NULL,
PRIMARY KEY (distributionCompanyID)
);
我正在尝试将此表映射到使用 Hibernate 的类:
@Entity
@Table(name = "distributionCompanies")
public class DistributionCompany implements DatabaseObject {
@Id
@GeneratedValue
@Column(name = "distributionCompanyID", length = 11, unique = true, nullable = false)
private int distributionCompanyID;
....
但是,在运行时,我遇到了这个问题:
Initial SessionFactory creation failedorg.hibernate.HibernateException: Missing column: distributionCompanyID_distributionCompanyID in database2.distributionCompanies
这不是数据库中唯一的表,我已经成功地使用相同的方法映射了其他类,所以我有点不明白为什么这会导致问题。
感谢您的宝贵时间, 塞缪尔·史密斯
编辑:针对 Xavi 的评论,我暂时删除了该列的另一个映射,并且错误消失了,所以坏蛋可能位于以下代码中:
@ManyToOne(targetEntity = DistributionCompany.class)
@JoinTable(name = "distributionCompanies", joinColumns = { @JoinColumn(name = "distributionCompanyID", nullable = false) })
private int distributionCompanyID;
【问题讨论】:
-
Hibernate 似乎正在寻找一个名为
distributionCompanyID_distributionCompanyID的列。该实体是否有其他映射(例如与其他实体的关联)?您是否尝试只保留此列的映射以确保它是导致错误的那个?如果它仅适用于distributionCompanyId的映射,请发布实体的完整映射。 -
您想使用什么@Generatedvalue 策略。真的是 DEFAULT 是 AUTO 吗?
-
@XaviLópez - 你让我走上了正确的道路,请参阅我的编辑。谢谢你:)
-
@Samuel 确实,我已经写了一个关于这个的答案。