Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate ManyToMany and SINGLE_TABLE inheritance ClassCastException: BagType.? / 8 сообщений из 8, страница 1 из 1
08.08.2018, 22:55
    #39685109
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToMany and SINGLE_TABLE inheritance ClassCastException: BagType.?
Господа, подскажите пожалуйста - где копать, а то даже ошибку толком прогуглить не могу, и не понимаю, из-за чего она появляется..

Ситуация такова: Ниже приведенные сущности не стартуют в проекте, если только вытянуть 3 сущности в отдельный проект, то всё стартует. Не могу понять, почему то же самое в проекте с другими сущностями стартует..

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@Entity
@Table(name = "external_offer")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "offer_type", discriminatorType = DiscriminatorType.STRING)
public abstract class ExternalOffer

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    ......



K-Entity

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
@Entity
@Table(name = "k")
public class K
{
    @Id
    @Column(name = "id", nullable = false, updatable = false)
    private long id;

    @ManyToMany(fetch = FetchType.EAGER)
    @JoinTable(
        name = "K2GlobalOffer",
        joinColumns = @JoinColumn(
            name = "k_id", referencedColumnName = "id"),
        inverseJoinColumns = @JoinColumn(
            name = "global_offer_id", referencedColumnName = "id"))
    private List<GlobalExternalOffer> globalExternalOffers;



EOffer-Entity

Код: java
1.
2.
3.
4.
5.
6.
7.
@Entity
@DiscriminatorValue("GLOBAL")
public class GlobalExternalOffer extends ExternalOffer
{

    @ManyToMany(mappedBy = "globalExternalOffers", fetch = FetchType.EAGER)
    private List<K> kRef;




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:970)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:895)
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:57)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:388)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:377)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1761)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1698)
    ... 75 common frames omitted
Caused by: org.hibernate.MappingException: Could not instantiate persister org.hibernate.persister.entity.SingleTableEntityPersister
    at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:112)
    at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:77)
    at org.hibernate.metamodel.internal.MetamodelImpl.initialize(MetamodelImpl.java:128)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:300)
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:460)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:892)
    ... 82 common frames omitted
Caused by: java.lang.ClassCastException: org.hibernate.type.BagType cannot be cast to org.hibernate.type.EntityType
    at org.hibernate.persister.entity.AbstractPropertyMapping.addPropertyPath(AbstractPropertyMapping.java:208)
    at org.hibernate.persister.entity.AbstractPropertyMapping.initPropertyPaths(AbstractPropertyMapping.java:395)
    at org.hibernate.persister.entity.AbstractEntityPersister.initOrdinaryPropertyPaths(AbstractEntityPersister.java:2300)
    at org.hibernate.persister.entity.AbstractEntityPersister.initPropertyPaths(AbstractEntityPersister.java:2347)
    at org.hibernate.persister.entity.AbstractEntityPersister.postConstruct(AbstractEntityPersister.java:3906)
    at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:437)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:488)
    at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:96)
    ... 87 common frames omitted



Есть идеи? Спасибо!
...
Рейтинг: 0 / 0
08.08.2018, 23:32
    #39685116
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToMany and SINGLE_TABLE inheritance ClassCastException: BagType.?
конфиг хибера кривой. написано же.
...
Рейтинг: 0 / 0
09.08.2018, 00:10
    #39685121
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToMany and SINGLE_TABLE inheritance ClassCastException: BagType.?
andreykaTконфиг хибера кривой. написано же. - Где, как кривой? Приложение работает, уже много месяцев в рабочем состоянии, только как добавляю ManyToMany - ложиться. Не понимаю почему. конфиг стандартный от спринга 2
...
Рейтинг: 0 / 0
09.08.2018, 11:05
    #39685305
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToMany and SINGLE_TABLE inheritance ClassCastException: BagType.?
_webdev_,

кажется моя ошибка в совершенно другом.
У меня в Сущности K есть ещё связь OneToMany. И всюду стоит fetch=EAGER. Проблема наверное в этом.
Если я в тот проект, что вы создали, в сущность k добавляю OneToMany то получаю.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
@Entity
@Table(name = "k")
public class K
{
    @Id
    @Column(name = "id", nullable = false, updatable = false)
    private long id;

    @OneToMany(mappedBy = "kRef")
    @LazyCollection(LazyCollectionOption.FALSE)
    @OrderBy("order_index")
    private List<RegionalExternalOffer> regionalExternalOffers;

    @ManyToMany(fetch = FetchType.EAGER)
    @JoinTable(
        name = "K2GlobalOffer",
        joinColumns = @JoinColumn(
            name = "k_id", referencedColumnName = "id"),
        inverseJoinColumns = @JoinColumn(
            name = "global_offer_id", referencedColumnName = "id"))
    private List<GlobalExternalOffer> globalExternalOffers;



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
@Entity
@Table(name = "regional_external_offer")
@DiscriminatorValue("REGIONAL")
public class RegionalExternalOffer extends ExternalOffer
{
    @ManyToOne
    @JoinColumn(name = "k_id")
    private K kRef;
...
Рейтинг: 0 / 0
09.08.2018, 11:11
    #39685315
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToMany and SINGLE_TABLE inheritance ClassCastException: BagType.?
возможно enitty Требует public construct а вот abstract класс можно инстанцировать ?
mapping superclass может лучше использовать ?
...
Рейтинг: 0 / 0
09.08.2018, 11:52
    #39685374
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToMany and SINGLE_TABLE inheritance ClassCastException: BagType.?
llemingвозможно enitty Требует public construct а вот abstract класс можно инстанцировать ?
в global and Regional конструкторы присутствуют. Абстрактный класс неззя.

llemingmapping superclass может лучше использовать ?
mappingSuperclass - это одна из возможностей
https://www.thoughts-on-java.org/complete-guide-inheritance-strategies-jpa-hibernate/

Думаю, что ошибка именно в том, что OneToMany и ManyToMany, можно сказать одного типа в одном entity.

Нагуглил приблизительные темы, изменил с List to Set, пока безрезультатно..
http://www.sql.ru/forum/955438/hibernate-oshibka-cannot-simultaneously-fetch-multiple-bags
https://stackoverflow.com/questions/4334970/hibernate-cannot-simultaneously-fetch-multiple-bags
...
Рейтинг: 0 / 0
09.08.2018, 12:08
    #39685397
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToMany and SINGLE_TABLE inheritance ClassCastException: BagType.?
...
Рейтинг: 0 / 0
09.08.2018, 12:20
    #39685423
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate ManyToMany and SINGLE_TABLE inheritance ClassCastException: BagType.?
lleming https://www.thoughts-on-java.org/association-mappings-bag-list-set/ - Я уже преобразовал коллекции в Set. Теперь у меня схожая ошибка, только с Set... ((((

Пытался добавить OrderColumn - но также без особого эффекта.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
@Entity
@Table(name = "k")
public class K
{
    @OneToMany(mappedBy = "kRef",fetch = FetchType.LAZY)
//    @LazyCollection(LazyCollectionOption.FALSE)
    @OrderBy("order_index")
    @OrderColumn(name="orderIndex")
    private Set<RegionalExternalOffer> regionalExternalOffers = new HashSet();

    @ManyToMany(fetch = FetchType.LAZY)
//    @LazyCollection(LazyCollectionOption.FALSE)
    @JoinTable(
        name = "K2GlobalOffer",
        joinColumns = @JoinColumn(
            name = "k_id", referencedColumnName = "id"),
        inverseJoinColumns = @JoinColumn(
            name = "global_offer_id", referencedColumnName = "id"))
    private Set<GlobalExternalOffer> globalExternalOffers = new HashSet();



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
@Entity
@Table(name = "regional_external_offer")
@DiscriminatorValue("REGIONAL")
public class RegionalExternalOffer extends ExternalOffer
{
    @ManyToOne
    @JoinColumn(name = "k_id")
    private K kRef;



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@Entity
@Table(name = "global_external_offer")
@DiscriminatorValue("GLOBAL")
public class GlobalExternalOffer extends ExternalOffer
{

    @ManyToMany(mappedBy = "globalExternalOffers")
//    @LazyCollection(LazyCollectionOption.FALSE)
    private Set<K> kRef;



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:970)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:895)
	at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:57)
	at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365)
	at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:388)
	at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:377)
	at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1761)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1698)
	... 75 common frames omitted
Caused by: org.hibernate.MappingException: Could not instantiate persister org.hibernate.persister.entity.SingleTableEntityPersister
	at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:112)
	at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:77)
	at org.hibernate.metamodel.internal.MetamodelImpl.initialize(MetamodelImpl.java:128)
	at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:300)
	at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:460)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:892)
	... 82 common frames omitted
Caused by: java.lang.ClassCastException: org.hibernate.type.SetType cannot be cast to org.hibernate.type.EntityType
	at org.hibernate.persister.entity.AbstractPropertyMapping.addPropertyPath(AbstractPropertyMapping.java:208)
	at org.hibernate.persister.entity.AbstractPropertyMapping.initPropertyPaths(AbstractPropertyMapping.java:395)
	at org.hibernate.persister.entity.AbstractEntityPersister.initOrdinaryPropertyPaths(AbstractEntityPersister.java:2300)
	at org.hibernate.persister.entity.AbstractEntityPersister.initPropertyPaths(AbstractEntityPersister.java:2347)
	at org.hibernate.persister.entity.AbstractEntityPersister.postConstruct(AbstractEntityPersister.java:3906)
	at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:437)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:488)
	at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:96)
	... 87 common frames omitted
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate ManyToMany and SINGLE_TABLE inheritance ClassCastException: BagType.? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]