Hibernate: @OneToMany с @EmbeddedId - PullRequest
       13

Hibernate: @OneToMany с @EmbeddedId

0 голосов
/ 05 апреля 2019

Я пытаюсь связать 2 pojos, используя @OneToMany однонаправленную ассоциацию.Вот мои Pojos:

@Entity
@Table(name="game_template")
class SingleGameTemplate {
   @Id
   @Column(name = "id")
   private long m_id;

   @OneToMany
   @OneToMany(fetch = FetchType.EAGER)
   @JoinColumns({ //
      @JoinColumn(name = "game_template_id"), //
      @JoinColumn(name = "type")//
   })
   @MapKey(name = "m_id.m_type")
   private Map<ScoreFeatureType, ScoreFeature> m_features;

   ...
}

@Entity
@Table(name = "score_feature")
class Feature {
  @EmbeddedId
  private FeatureId m_id;

  ...
}

@Embeddable
class FeatureId {
   @Column(name = "game_template_id")
   private m_templateId

   @Column(name = "type")
   private FeatureType m_type;

   ...
}

Исключение, которое я получаю:

org.hibernate.AnnotationException: A Foreign key refering com.shareddata.entity.game.SingleGameTemplate from com.shareddata.entity.game.ScoreFeature has the wrong number of column. should be 1
    at org.hibernate.cfg.annotations.TableBinder.bindFk(TableBinder.java:657)
    at org.hibernate.cfg.annotations.CollectionBinder.bindCollectionSecondPass(CollectionBinder.java:1708)
    at org.hibernate.cfg.annotations.CollectionBinder.bindOneToManySecondPass(CollectionBinder.java:939)
    at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:854)
    at org.hibernate.cfg.annotations.MapBinder$1.secondPass(MapBinder.java:97)
    at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:54)
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1684)
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1652)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:286)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83)
    at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:473)
    at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:84)number of column. should be 1

Обратите внимание, что моя таблица содержит 2 поля в качестве первичных ключей, например:

id   template_id
 1        'A'
 1        'B'
 1        'C'
 2        'A'
 2        'B'
 2        'C'

Что я делаю не так?Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...