2017-01-06 2 views
0

Я пытаюсь использовать отображение onetomany для спецификации продукта, где я копировал аналогичный рабочий код из описаний. Я предоставляю весь свой код.org.hibernate.AnnotationException: использование @OneToMany или @ManyToMany для таргетинга на неотображенный класс

Caused by: javax.persistence.PersistenceException: [PersistenceUnit: sm-unit] Unable to build EntityManagerFactory 
     at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915) 
     at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890) 
     at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74) 
     at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:257) 
     at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:310) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452) 
     ... 38 more 
Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.salesmanager.core.business.catalog.product.model.Product.specifications[com.salesmanager.core.business.catalog.product.model.specification.ProductSpecification] 
     at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1204) 

Product.java имеет такую ​​запись:

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.REMOVE, mappedBy = "product") 
    private Set<ProductSpecification> specifications = new HashSet<ProductSpecification>(); 

ProductSpecification.java имеет ниже код ..

@Entity 
@Table(name = "PRODUCT_SPECIFICATION", schema=SchemaConstant.BEAWLP_JAMBIRA_SCHEMA) 
public class ProductSpecification extends SalesManagerEntity<Long, ProductSpecification> { 
    private static final long serialVersionUID = -7991123525661321865L; 

    @ManyToOne(targetEntity = Product.class) 
    @JoinColumn(name = "PRODUCT_ID", nullable = false) 
    private Product product; 

@Id 
@Column(name = "SPECIFICATION_ID", unique = true, nullable = false) 
@TableGenerator(name = "TABLE_GEN", table = "SM_SEQUENCER", pkColumnName = "SEQ_NAME", valueColumnName = "SEQ_COUNT", pkColumnValue = "SPECIFICATION_SEQ_NEXT_VAL") 
@GeneratedValue(strategy = GenerationType.TABLE, generator = "TABLE_GEN") 
private Long id; 

@Column(name="TITLE", length=100) 
private String title; 

public ProductSpecification() { 
} 

public Product getProduct() { 
    return product; 
} 

public void setProduct(Product product) { 
    this.product = product; 
} 

public String getTitle() { 
    return title; 
} 

public void setTitle(String title) { 
    this.title = title; 
} 

public Long getId() { 
    return id; 
} 

public void setId(Long id) { 
    this.id = id; 
} 
+0

Try '@OneToMany (..., targetEntity = ProductSpecification)' в аннотации – ZeusNet

+0

Спасибо ZeusNet. \t Я получаю такое же исключение даже после добавления targetEntity – user3338029

+0

Можете ли вы также указать исходный код продукта YouTube? – ZeusNet

ответ

1

Из сообщения об ошибке может быть известно, что объект неправильно отображен.

  • Убедитесь, что вы импортировали javax.persistence.entity, а не org.hibernate.annotations.entity.
  • Кроме того, убедитесь, что объект указан в конфигурационных файлах (persistence.xml, hibernate.cfg.xml).
+0

Да. Спасибо Сурешу. У меня была орфографическая ошибка для записи ProductSpecification в persistence.xml – user3338029

+0

Рад, что я мог бы помочь. –

0

Я думаю, что вы пропустили targetEntity, попробуйте с ниже линии он может помогает вам.

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.REMOVE, mappedBy = "product", targetEntity = ProductSpecification.class) 
private Set<ProductSpecification> specifications = new HashSet<ProductSpecification>(); 
+0

Я получаю такое же исключение даже после добавления targetEntity – user3338029

0

Я заметил, что это исключение возникает при использовании Set и HashSet. Вместо этого вы можете использовать List и ArrayList

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.REMOVE, mappedBy = "product") 
private List<ProductSpecification> specifications = new ArrayList<ProductSpecification>(); 
Смежные вопросы

 Смежные вопросы