Итак, в базе данных есть таблица distributionCompanies, созданная как так:Hibernate Исключение: Отсутствует столбец (существует)
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
Это не только таблица в базы данных, и мне удалось сопоставить другие классы с использованием того же метода, поэтому я немного зациклен на том, почему это вызывает проблему.
Спасибо за ваше время, Samuel Smith
EDIT: В ответ на комментарий Хави, я временно удален другое отображение для столбца, и ошибка ушла, так что плохо яйцо, вероятно, лежит в следующем код:
@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 - Вы привели меня по правильному пути, см. Мое редактирование. Спасибо :) –