org.hibernate.AnnotationException: коллекция не имеет ни универсального типа, ни OneToMany.targetEntity ()

org.hibernate.AnnotationException: Collection has neither generic type or OneToMany.targetEntity()

проблема

См. Следующее отображение Hibernate с помощью аннотации, созданной средством Hibernate NetBean.

Файл: Stock.java

package com.example.stock.model;
//...
@Entity
@Table(name = "stock", catalog = "example");
public class Stock implements java.io.Serializable {

    //...
    private Set stockCategories = new HashSet(0);

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "stock")
    public Set getStockCategories() {
    return this.stockCategories;
    }

    public void setStockCategories(Set stockCategories) {
    this.stockCategories = stockCategories;
    }

}

Файл: StockCategory.java

package com.example.stock.model;
//...
@Entity
@Table(name = "stock_category", catalog = "example");
public class StockCategory implements java.io.Serializable {

    private Stock stock;
    //...

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "STOCK_ID", nullable = false)
    public Stock getStock() {
    return this.stock;
    }

}

Когда программа работает, возникает следующее исключение:

Caused by: org.hibernate.AnnotationException:
    Collection has neither generic type or OneToMany.targetEntity()
    defined: com.example.stock.model.Stock.stockCategories

Решение

Hibernate does not support relationship which is in raw type, и поскольку ваш «Set stockCategories» не объявил какой-либо тип данных, и Hibernate не может продолжить работу с ним.

Чтобы исправить это, просто объявите точный тип данных в переменной отношения, которая имеет аннотацию@OneToMany, см. Ниже.
File : Stock.java

package com.example.stock.model;
//...
@Entity
@Table(name = "stock", catalog = "example");
public class Stock implements java.io.Serializable {

    //...
    private Set stockCategories = new HashSet(0);

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "stock")
    public Set getStockCategories() {
    return this.stockCategories;
    }

    public void setStockCategories(Set stockCategories) {
    this.stockCategories = stockCategories;
    }

}