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

Ситуация такова: Ниже приведенные сущности не стартуют в проекте, если только вытянуть 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
Hibernate ManyToMany and SINGLE_TABLE inheritance ClassCastException: BagType.?
    #39685116
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
конфиг хибера кривой. написано же.
...
Рейтинг: 0 / 0
Hibernate ManyToMany and SINGLE_TABLE inheritance ClassCastException: BagType.?
    #39685121
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreykaTконфиг хибера кривой. написано же. - Где, как кривой? Приложение работает, уже много месяцев в рабочем состоянии, только как добавляю ManyToMany - ложиться. Не понимаю почему. конфиг стандартный от спринга 2
...
Рейтинг: 0 / 0
Hibernate ManyToMany and SINGLE_TABLE inheritance ClassCastException: BagType.?
    #39685305
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_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
Hibernate ManyToMany and SINGLE_TABLE inheritance ClassCastException: BagType.?
    #39685315
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возможно enitty Требует public construct а вот abstract класс можно инстанцировать ?
mapping superclass может лучше использовать ?
...
Рейтинг: 0 / 0
Hibernate ManyToMany and SINGLE_TABLE inheritance ClassCastException: BagType.?
    #39685374
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Hibernate ManyToMany and SINGLE_TABLE inheritance ClassCastException: BagType.?
    #39685397
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Hibernate ManyToMany and SINGLE_TABLE inheritance ClassCastException: BagType.?
    #39685423
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate ManyToMany and SINGLE_TABLE inheritance ClassCastException: BagType.?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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