Hi,
I'm trying to implement a table per hierarchy and I'm getting
Code:
org.hibernate.WrongClassException: Object with id: 162 was not of the specified subclass: nl.project.model.Category (Discriminator: EVT)
at org.hibernate.loader.Loader.getInstanceClass(Loader.java:1600)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1431)
at org.hibernate.loader.Loader.getRow(Loader.java:1355)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:611)
at org.hibernate.loader.Loader.doQuery(Loader.java:829)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
at org.hibernate.loader.Loader.loadCollection(Loader.java:2166)
at org.hibernate.loader.collection.BatchingCollectionInitializer.initialize(BatchingCollectionInitializer.java:86)
at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:627)
at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:83)
at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1863)
at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:369)
at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:111)
at org.hibernate.collection.PersistentSet.toArray(PersistentSet.java:194)
My classes
Code:
@Entity
@Table(name = "Category")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorValue(value = "STD")
@DiscriminatorColumn(name = "DTYPE", length = 3)
@DiscriminatorOptions(force=true)
@Indexed
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE, region = "NeverChange")
public class Category implements Serializable, Comparable<Category> {
[..]
}
@Entity(name = "User2")
@Table(name = "User")
@Indexed
@Cache(usage=CacheConcurrencyStrategy.TRANSACTIONAL)
public class Usor implements Serializable{
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "FavouriteCategories", joinColumns = @JoinColumn(name = "UserID", referencedColumnName = "UserID",nullable=false), inverseJoinColumns = @JoinColumn(name = "CategoryID", referencedColumnName = "CategoryID",nullable=false))
@BatchSize(size=10)
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public Set<Category> getFavouriteCategories() {
return favouriteCategories;
}
}
Do I need some kind of discriminator column on the ManyToMany table as well? If so, how? Or do I need to do something else?
Kind regards,
Marc