XMLWordPrintable

    • Icon: Support Patch Support Patch
    • Resolution: Cannot Reproduce
    • Icon: Major Major
    • None
    • EAP_EWP 5.1.2, EAP_EWP 5.2.0
    • Hibernate
    • None

      https://hibernate.atlassian.net/browse/HHH-2872

      I get a MappingException for @ManyToOne join if table on the left of the association is alphabetically lower than table on the right
      I have tables VO_USER, V_ORGANIZATIONAL and VO_AREA
      VO_USER has USR_IDR as primary key.
      V_ORGANIZATIONAL has a composite primary key of BUSINESS_AREA_CODE and CODE
      VO_AREA has BUS_ARA_IDR as the primary key
      I get the following exception when I join the VO_USER table with the V_ORGANIZATIONAL table
      "org.hibernate.MappingException: Unable to find column with logical name: BUSINESS_AREA_CODE in org.hibernate.mapping.Table(V_ORGANIZATIONAL_GRADE) and its related supertables and secondary tables"
      Howerver, if I rename the table V_ORGANIZATIONAL to VO_ORGANIZATIONAL, it works fine - which makes me conclude that it is an issue with the alphabetical ordering of the tables in the association. The table name on the left side of the @ManyToOne join must be alphabetically greater than the table on the right side - perhaps of the way hibernate loads the classes ??
      Can someone confirm that is the issue, and what is the workaround/solution as I dont want to change the name of the table
      The simplified Code :

      User.java
      @Entity
      @org.hibernate.annotations.Entity(mutable = true)
      @Table(name = "VO_USER")
      @Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region = "user")
      public class User implements Serializable
      {
      private static final long serialVersionUID = -1894472442328538017L;
      @Id
      @Column(name = "USR_IDR")
      private String userId;
      @ManyToOne
      @JoinColumn(name = "BUS_ARA_IDR", insertable = false, updatable = false, unique = false, nullable = false)
      private BusinessArea businessArea;
      @ManyToOne(targetEntity = Organizational.class)
      @JoinColumns(
      { @JoinColumn(name = "BUS_ARA_IDR", referencedColumnName = "BUSINESS_AREA_CODE", unique = false, insertable = false, updatable = false, nullable=true), @JoinColumn(name = "USR_GRD", referencedColumnName = "CODE", unique = false, insertable = false, updatable = false, nullable=true) }
      )
      private Organizational organizational;
      ....
      }
      
      Organizational.java
      @Entity
      @Table(name = "V_ORGANIZATIONAL")
      @IdClass(OrganizationalKey.class)
      @Cache(usage = CacheConcurrencyStrategy.READ_ONLY, region = "organization")
      public class Organizational implements CodedValue,
      Comparable<Organizational>, Serializable
      {
      private static final long serialVersionUID = 7414956278287853961L;
      @Id
      private String code;
      @Id
      private BusinessArea businessArea;
      private Organizational()
      {
      }
      ....
      }
      
      OrganizationalKey.java
      public class OrganizationalKey implements Serializable
      {
      private static final long serialVersionUID = -8022957102173252455L;
      @ManyToOne(targetEntity = BusinessArea.class)
      @JoinColumn(name = "BUSINESS_AREA_CODE", insertable = false, updatable = false)
      private BusinessArea businessArea;
      @Column(name = "CODE", length = 5, insertable = false, updatable = false)
      private String code;
      OrganizationalKey()
      {
      }
      ....
      }
      
      BusinessArea.java
      @Entity
      @Table(name = "VO_AREA")
      @Cache(usage = CacheConcurrencyStrategy.READ_ONLY, region = "organization")
      public class BusinessArea implements CodedValue, Serializable
      {
      private static final long serialVersionUID = 6911068689852530787L;
      @Id
      @Column(name = "BUS_ARA_IDR", length = 3, updatable = false)
      private String code;
      private BusinessArea()
      {
      };
      }
      

              brmeyer_jira Brett Meyer (Inactive)
              rhn-support-rmartine Ricardo Martinelli
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: