2014-09-18 3 views
0

Hibernate бросает ошибку:Невозможно найти столбец с логическим именем: продукт

org.hibernate.MappingException: 
    Unable to find column with logical name: product in 
     org.hibernate.mapping.Table(product_part) 
    and its related supertables and secondary tables 

Entity Класс

@Entity 
@Table(name = "product_part") 
public class ProductPart implements Serializable { 

    @Id 
    @GeneratedValue 
    @Column(name = "id") 
    private int id; 

    @ManyToOne 
    @javax.persistence.JoinColumn(name = "product", referencedColumnName = "product", nullable = false) 
    private ProductPart productByProduct; 

    @ManyToOne 
    @javax.persistence.JoinColumn(name = "part", referencedColumnName = "part", nullable = false) 
    private Part partByPart; 
    } 

MySQL таблица

CREATE TABLE `product_part` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `product` int(11) NOT NULL, 
    `part` int(11) NOT NULL, 
    PRIMARY KEY (`id`), 
    KEY `fk_product` (`product`), 
    KEY `fk_part` (`part`), 
    CONSTRAINT `fk_product` FOREIGN KEY (`product`) REFERENCES `product` (`product`) ON DELETE NO ACTION ON UPDATE NO ACTION, 
    CONSTRAINT `fk_part` FOREIGN KEY (`part`) REFERENCES `part` (`part`) ON DELETE NO ACTION ON UPDATE NO ACTION 
) 

В чем проблема? Как это исправить?

UPDATE:

Связанные таблицы по внешнему ключу:

CREATE TABLE `part` (
     `part` int(11) NOT NULL AUTO_INCREMENT, 
     `name` varchar(150) NOT NULL, 
     PRIMARY KEY (`part`) 
    ) 

и

CREATE TABLE `product` (
     `product` int(11) NOT NULL AUTO_INCREMENT, 
     `name` varchar(150) NOT NULL, 
     PRIMARY KEY (`product`) 
) 
+0

решаемые путем замены 'частного ProductPart productByProduct,' 'с частным продуктом продукта;' –

ответ

0

Я вижу, ваш класс имеет

@ManyToOne 
@javax.persistence.JoinColumn(name = "product", referencedColumnName = "product", nullable = false) 
private ProductPart productByProduct; 

Это аннотация для самостоятельного присоединения к гибернату. Имейте @ManyToOne, но у меня нет @OneToMany. Таблица не определяет столбец «продукт». Вам нужно добавить

@OneToMany(mappedBy="productByProduct") 
private Set<ProductPart > subProductPart = new HashSet<ProductPart>();