java.lang.ClassCastException: org.hibernate.mapping.Formula cannot be cast to org.hibernate.mapping.Column

Hibernate JIRA | Michael Simons | 4 years ago
tip
Click on the to mark the solution that helps you, Samebug will learn from it.
As a community member, you’ll be rewarded for you help.
  1. 0

    Given a mapping like {code} @ManyToOne(fetch=FetchType.EAGER, optional=false) @JoinColumnsOrFormulas({ @JoinColumnOrFormula(formula=@JoinFormula(value=Titel.DOMAIN_FORMULA, referencedColumnName="rv_domain")), @JoinColumnOrFormula(column=@JoinColumn(name="titel", referencedColumnName="rv_low_value")) }) @Fetch(FetchMode.JOIN) @NotNull private Titel titel; {code} where Titel is a subtype of a DomainValue: {code} @Entity @DiscriminatorValue(Titel.DOMAIN) public class Titel extends DomainValue { private static final long serialVersionUID = 5804243997732685958L; public final static String DOMAIN = "TITEL"; public final static String DOMAIN_FORMULA = "'" + DOMAIN + "'"; } {code} base class DomainValue {code} @Entity @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @Cacheable(true) @Cache(usage=CacheConcurrencyStrategy.READ_ONLY) @Immutable @Table(name="cg_ref_codes") @IdClass(DomainValue.PrimaryKey.class) @DiscriminatorColumn(name="rv_domain") public class DomainValue implements Serializable { ... } {code} the @NotNull leads to a class cast exception while starting the persistence unit: {code} java.lang.ClassCastException: org.hibernate.mapping.Formula cannot be cast to org.hibernate.mapping.Column at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyNotNull(TypeSafeActivator.java:314) ~[hibernate-core-4.1.11.Final.jar:4.1.11.Final] at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyConstraints(TypeSafeActivator.java:247) ~[hibernate-core-4.1.11.Final.jar:4.1.11.Final] at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyDDL(TypeSafeActivator.java:209) ~[hibernate-core-4.1.11.Final.jar:4.1.11.Final] at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyRelationalConstraints(TypeSafeActivator.java:186) ~[hibernate-core-4.1.11.Final.jar:4.1.11.Final] at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyRelationalConstraints(TypeSafeActivator.java:158) ~[hibernate-core-4.1.11.Final.jar:4.1.11.Final] at org.hibernate.cfg.beanvalidation.TypeSafeActivator.activate(TypeSafeActivator.java:110) ~[hibernate-core-4.1.11.Final.jar:4.1.11.Final] {code} Mapping seams to work, though. But i guess the validation isnt't in place.

    Hibernate JIRA | 4 years ago | Michael Simons
    java.lang.ClassCastException: org.hibernate.mapping.Formula cannot be cast to org.hibernate.mapping.Column
  2. 0

    Given a mapping like {code} @ManyToOne(fetch=FetchType.EAGER, optional=false) @JoinColumnsOrFormulas({ @JoinColumnOrFormula(formula=@JoinFormula(value=Titel.DOMAIN_FORMULA, referencedColumnName="rv_domain")), @JoinColumnOrFormula(column=@JoinColumn(name="titel", referencedColumnName="rv_low_value")) }) @Fetch(FetchMode.JOIN) @NotNull private Titel titel; {code} where Titel is a subtype of a DomainValue: {code} @Entity @DiscriminatorValue(Titel.DOMAIN) public class Titel extends DomainValue { private static final long serialVersionUID = 5804243997732685958L; public final static String DOMAIN = "TITEL"; public final static String DOMAIN_FORMULA = "'" + DOMAIN + "'"; } {code} base class DomainValue {code} @Entity @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @Cacheable(true) @Cache(usage=CacheConcurrencyStrategy.READ_ONLY) @Immutable @Table(name="cg_ref_codes") @IdClass(DomainValue.PrimaryKey.class) @DiscriminatorColumn(name="rv_domain") public class DomainValue implements Serializable { ... } {code} the @NotNull leads to a class cast exception while starting the persistence unit: {code} java.lang.ClassCastException: org.hibernate.mapping.Formula cannot be cast to org.hibernate.mapping.Column at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyNotNull(TypeSafeActivator.java:314) ~[hibernate-core-4.1.11.Final.jar:4.1.11.Final] at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyConstraints(TypeSafeActivator.java:247) ~[hibernate-core-4.1.11.Final.jar:4.1.11.Final] at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyDDL(TypeSafeActivator.java:209) ~[hibernate-core-4.1.11.Final.jar:4.1.11.Final] at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyRelationalConstraints(TypeSafeActivator.java:186) ~[hibernate-core-4.1.11.Final.jar:4.1.11.Final] at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyRelationalConstraints(TypeSafeActivator.java:158) ~[hibernate-core-4.1.11.Final.jar:4.1.11.Final] at org.hibernate.cfg.beanvalidation.TypeSafeActivator.activate(TypeSafeActivator.java:110) ~[hibernate-core-4.1.11.Final.jar:4.1.11.Final] {code} Mapping seams to work, though. But i guess the validation isnt't in place.

    Hibernate JIRA | 4 years ago | Michael Simons
    java.lang.ClassCastException: org.hibernate.mapping.Formula cannot be cast to org.hibernate.mapping.Column

    Root Cause Analysis

    1. java.lang.ClassCastException

      org.hibernate.mapping.Formula cannot be cast to org.hibernate.mapping.Column

      at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyNotNull()
    2. Hibernate
      TypeSafeActivator.activate
      1. org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyNotNull(TypeSafeActivator.java:314)[hibernate-core-4.1.11.Final.jar:4.1.11.Final]
      2. org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyConstraints(TypeSafeActivator.java:247)[hibernate-core-4.1.11.Final.jar:4.1.11.Final]
      3. org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyDDL(TypeSafeActivator.java:209)[hibernate-core-4.1.11.Final.jar:4.1.11.Final]
      4. org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyRelationalConstraints(TypeSafeActivator.java:186)[hibernate-core-4.1.11.Final.jar:4.1.11.Final]
      5. org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyRelationalConstraints(TypeSafeActivator.java:158)[hibernate-core-4.1.11.Final.jar:4.1.11.Final]
      6. org.hibernate.cfg.beanvalidation.TypeSafeActivator.activate(TypeSafeActivator.java:110)[hibernate-core-4.1.11.Final.jar:4.1.11.Final]
      6 frames