2 Replies Latest reply on Sep 13, 2006 9:51 AM by Philipp Taprogge

    Strange mapping problem...

    Philipp Taprogge Newbie

      Hello all!

      I have here a strange mapping problem on my hands (at least it seems strange to me). Perhaps anyone here can enlighten me.

      I have an entity model that contains (among other things) two entities (Cheque and BonusCard) that work perfectly by themselves.
      Cheque is an obstract class with InheritenceStrategy.JOINED, BonusCard is the only class in it's hirarchy.
      I now would like them to extend a common superclass, again JOINED.

      When I do this, suddenly hibernate complains like this on a field on the BonusCard:

      org.hibernate.MappingException: Could not determine type for: java.util.List, for columns: [org.hibernate.mapping.Column(accountList)]
      


      Since I have no idea where my mistake might lie, I will post the classes here.
      Any hints are very much appreciated.

      This is the intended superclass:
      @Entity
      @Table(name = "VOUCHER")
      @Inheritance(strategy = InheritanceType.JOINED)
      public abstract class Voucher implements Serializable {
      
       @Id
       @Column(name = "ID")
       private long id;
      
       @Column(name = "BARCODE")
       @NotNull
       private String barcode;
      
       @Version
       @Column(name = "CNT_VERSION")
       private long versionCounter;
      
       @NotNull
       @ManyToOne
       @JoinColumn(name = "CHARGE")
       private Charge charge;
      
      [... getters and setters ...]
      }
      


      This is the Cheque class:
      @Entity
      @Table(name = "CHEQUE")
      @Inheritance(strategy = InheritanceType.JOINED)
      public abstract class Cheque extends Voucher implements Serializable {
      
       @NotNull
       @ManyToOne(optional = false)
       @JoinColumn(name = "CHEQUE_STATUS")
       private ChequeStatus chequeStatus;
      
       @ManyToOne
       @JoinColumn(name = "CUSTOMER")
       private Customer customer;
      
       @NotNull
       private Date expires;
      
       @ManyToOne
       @JoinColumn(name = "ACQUIRER")
       private Acquirer redeemingAcquirer;
      
      [... getters and setters ...]
      }
      


      This is the BonusCard class:
      @Entity
      @Table(name = "BONUSCARD")
      @Inheritance(strategy = InheritanceType.JOINED)
      public class BonusCard extends Voucher implements Serializable {
      
       @ManyToMany
       private List<CustomerUser> distributeUsers;
      
       @ManyToOne(optional = false)
       private CustomerUser managingUser;
      
       @ManyToOne
       private User user;
      
       @ManyToOne(optional = false)
       private BonusCardStatus bonusCardStatus;
      
       @OneToMany(mappedBy = "bonusCard", cascade = (CascadeType.ALL))
       private List<CardAccount> accountList;
      
       @NotNull
       @Column(name = "EXPIRES")
       private Date expires;
      
      [... getters and setters ...]
      }
      



      And finally the Charge I want them both to be associated with:

      @Entity
      @Table(name = "CHARGE")
      public class Charge implements Serializable {
      
       @Id
       @NotNull
       @Column(name = "ID_CHARGE")
       private int chargeId;
      
       @OneToMany(mappedBy = "charge")
       private List<Voucher> vouchers;
      
       @ManyToOne
       private Customer customer;
      
       @ManyToOne(optional = false)
       private ChargeStatus status;
      
       @ManyToOne
       @JoinColumn(name = "ACQUIRERGROUP")
       private AcquirerGroup acquirerGroup;
      
      [... getters and setters ...]
      }
      


      Thanks in advance for any advice you might have.

      Regards,
      Phil