генераторы последовательности игнорируются - PullRequest
2 голосов
/ 04 июня 2010

Я получаю следующую ошибку при сохранении объекта. Однако подобная конфигурация работает для других объектов модели в моих проектах. Любая помощь будет принята с благодарностью.

@Entity
@Table(name = "ENROLLMENT_GROUP_MEMBERSHIPS", schema = "LEAD_ROUTING")
public class EnrollmentGroupMembership implements Serializable, Comparable,Auditable {
    @javax.persistence.SequenceGenerator(name = "enrollmentGroupMemID", sequenceName = "S_ENROLLMENT_GROUP_MEMBERSHIPS")
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "enrollmentGroupMemID")
    @Column(name = "ID")
    private Long id;


@ManyToOne()
    @JoinColumn(name = "TIER_WEIGHT_OID", referencedColumnName = "OID", updatable = false, insertable = false)
    private TierWeight tierWeight;

    public EnrollmentGroupMembership() {

    }

}

Код:

@Entity
@Table(name = "TIER_WEIGHT", schema = "LEAD_ROUTING")
public class TierWeight implements Serializable, Auditable {

@SequenceGenerator(name = "tierSequence",sequenceName = "S_TIER_WEIGHT")
    @Column(name = "OID")
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "tierSequence")
    private Long id;

@OneToMany
    @JoinColumn(name = "TIER_WEIGHT_OID", referencedColumnName = "OID")
    private Set<EnrollmentGroupMembership> memberships;


    public TierWeight() {
    }
}

Код логического слоя:

@Override
    public void createTier(String tierName, float weight) {
        TierWeight tier = new TierWeight();
        tier.setWeight(weight);
        tier.setTier(tierName);
        tierWeightDAO.create(tier);
    }

Подобная конфигурация Many-one работает на протяжении всего проекта. Я не знаю, почему этот экземпляр не работает. Любая помощь будет принята с благодарностью.

Вот ошибка, которую я получаю

вызвано: org.hibernate.id.IdentifierGenerationException: идентификаторы для этого класса должны быть вручную присваивается перед вызовом save (): edu.apollogrp.d2ec.model.TierWeight at org.hibernate.id.Assigned.generate (Assigned.java:3 3) в org.hibernate.event.def.AbstractSaveEventListener. saveWithGeneratedId (AbstractSaveEventListener.java : 99)

Файл журнала сообщает, что tierSequence генератора последовательностей не создается. Однако создаются другие генераторы последовательности.

2010-06-03 11: 24: 51 834 ОТЛАДКА [Org.hibernate.cfg.AnnotationBinder:] Обработка аннотаций edu.apollogrp.d2ec.model.TierWeight.dateCreated 2010-06-03 11: 24: 51 834 DEBUG [Org.hibernate.cfg.AnnotationBinder:] Обработка аннотаций edu.apollogrp.d2ec.model.TierWeight.dateCreated 2010-06-03 11: 24: 51 834 DEBUG [Org.hibernate.cfg.Ejb3Column:] Связующий столбец DATE_CREATED уникальный ложь

....................................... ....................................... 2010-06-03 11: 24: 51 756 DEBUG [Org.hibernate.cfg.AnnotationBinder:] Обработка аннотаций edu.apollogrp.d2ec.model.CounselorAvailability.id 2010-06-03 11: 24: 51 756 DEBUG [Org.hibernate.cfg.Ejb3Column:] OID столбца привязки уникальный false 2010-06-03 11: 24: 51 756 DEBUG [Org.hibernate.cfg.Ejb3Column:] OID столбца привязки уникальный false 2010-06-03 11: 24: 51 756 DEBUG [Org.hibernate.cfg.AnnotationBinder:] id - это id 2010-06-03 11: 24: 51,756 DEBUG [Org.hibernate.cfg.AnnotationBinder:] id - это id 2010-06-03 11: 24: 51,756 DEBUG [Org.hibernate.cfg.AnnotationBinder:] Добавить генератор последовательности с именем: advisorAvailabilityID 2010-06-03 11: 24: 51,756 ОТЛАДКА [Org.hibernate.cfg.AnnotationBinder:] Добавить генератор последовательности с именем: counselorAvailabilityID


При отладке я вижу, что org.hibernate.impl.SessionFactoryImpl возвращает «Назначенный» идентификаторGenerator. Это ужасно Я указал идентификатор «Генератор» как «Авто». Пожалуйста, смотрите код выше.

Как sidenote, я пытался отладить и посмотреть, как объекты извлекаются из базы данных. Похоже, в записях enrollmentgroupmembership указано заполненное значение. Однако, если я посмотрю на объект меньшего веса, у него нет записей членства в группе регистрации. Я озадачен Я думаю, что эти две проблемы должны быть связаны.

Мэдди.

1 Ответ

0 голосов
/ 19 июня 2012

Я думаю, конфигурация @OneToMany должна быть такой, как показано ниже.

  • @ OneToMany (mappedBy = "tierWeight")
...