i got ‘any types do not have a unique referenced persister’ when i try do use criteria with @ManyToAny.
context
@AnyMetaDef(name= "EntityMetaDef", metaType = "string", idType = "long",
metaValues = {
@MetaValue(value = "C", targetEntity = Customer.class),
@MetaValue(value = "R", targetEntity = Restaurant.class)
}
)
public interface BusinessEntity {
}
@Entity
@Table(name = "user_account")
public class UserAccount implements Serializable {
...
@ManyToAny(
metaDef = "EntityMetaDef",
metaColumn = @Column(name = "entity_type")
)
@Cascade({org.hibernate.annotations.CascadeType.ALL})
@JoinTable(name = "user_account_entity",
joinColumns = @JoinColumn(name = "user_account_id"),
inverseJoinColumns = @JoinColumn(name = "entity_id")
)
private List<BusinessEntity> entitys = new ArrayList<>();
}
if i try to find a customer with criteria :
criteria.createAlias("entitys", "entity")
.add(Restrictions.and(
Restrictions.eq("entity.id", 12),
Restrictions.eq("entity.class", Customer.class)
));
i got :
java.lang.UnsupportedOperationException: any types do not have a unique referenced persister
at org.hibernate.type.AnyType.getAssociatedJoinable(AnyType.java:489)
at org.hibernate.loader.JoinWalker.addAssociationToJoinTree(JoinWalker.java:218)
at org.hibernate.loader.JoinWalker.addAssociationToJoinTreeIfNecessary(JoinWalker.java:187)
at org.hibernate.loader.JoinWalker.walkCollectionTree(JoinWalker.java:333)
at org.hibernate.loader.JoinWalker.addAssociationToJoinTree(JoinWalker.java:257)
at org.hibernate.loader.JoinWalker.addAssociationToJoinTreeIfNecessary(JoinWalker.java:187)
at org.hibernate.loader.JoinWalker.walkEntityAssociationTree(JoinWalker.java:401)
at org.hibernate.loader.JoinWalker.walkEntityTree(JoinWalker.java:515)
at org.hibernate.loader.JoinWalker.walkEntityTree(JoinWalker.java:282)
at org.hibernate.loader.AbstractEntityJoinWalker.initAll(AbstractEntityJoinWalker.java:66)
at org.hibernate.loader.AbstractEntityJoinWalker.initAll(AbstractEntityJoinWalker.java:58)
at org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:106)
at org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:75)
at org.hibernate.loader.criteria.CriteriaLoader.<init>(CriteriaLoader.java:80)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1908)
at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:370)
did someone can explain how to do this simple query ? i try to do it with sqlRestrictions but i can’t add the join this the sub-table user_account_entity…