2010-06-03 66 views
2

保存對象時出現以下錯誤。不過,類似的配置在我的項目中適用於其他模型對象。任何幫助將不勝感激。序列生成器被忽略

@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); 
    } 

許多相似的一體化配置工作,通過了該項目。我不知道爲什麼這一例失敗。任何幫助將不勝感激。

下面是我得到

由導致錯誤: org.hibernate.id.IdentifierGenerationException: IDS這個類必須是調用save()之前手動 分配: EDU .apollogrp.d2ec.model.TierWeight at org.hibernate.id.Assigned.generate(Assigned.java:3 3)at org.hibernate.event.def.AbstractSaveEventListener。 saveWithGeneratedId(AbstractSaveEventListener.java :99)

日誌文件,告訴該序列發生器tierSequence是沒有得到建立。但是其他序列生成器正在創建。

2010-06-03 11:24:51834 DEBUG [org.hibernate.cfg.AnnotationBinder:]的 處理註解edu.apollogrp.d2ec.model.TierWeight.dateCreated 2010-06-03 11:24:51834 DEBUG [org.hibernate.cfg.AnnotationBinder:]的 處理註解edu.apollogrp.d2ec.model.TierWeight.dateCreated 2010-06-03 11:24:51834 DEBUG [org.hibernate作爲.cfg.Ejb3Column:] 綁定列DATE_CREATED獨特 false

....................................... ........ ............................... 2010-06-03 11:24:51,756調試 [org.hibernate.cfg .AnnotationBinder:]的 處理註解edu.apollogrp.d2ec.model.CounselorAvailability.id 2010-06-03 11:24:51756 DEBUG [org.hibernate.cfg.Ejb3Column:] 結合柱OID獨特假 2010-06-03 11:24:51,756 DEBUG [org.hibernate.cfg.Ejb3Column:] 綁定列OID唯一false 2010-06-03 11:24:51,756調試 [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:51756 DEBUG [org.hibernate.cfg.AnnotationBinder:] 添加序列發生器與名稱: counselorAvailabilityID 2010-06-03 11:24:51,756調試 [org.hibernate.cfg。AnnotationBinder:] 添加序列發生器名稱: counselorAvailabilityID


調試時,我看到org.hibernate.impl.SessionFactoryImpl正在返回 「分配」 identifierGenerator。這太可怕了。我已將identifierGenerator指定爲「Auto」。請參閱上面的代碼。

作爲一個旁註,我試圖調試並查看如何從數據庫中檢索對象。看起來登記組成員記錄具有填充權重值。但是,如果我查看tierweight對象,它沒有登記組成員記錄。我很困惑。我認爲這兩個問題必須相關。

Maddy。

+0

@luvfort也許你wnat看到http://stackoverflow.com/questions/1729723/hibernate-does-not-generate-identifier-when - 使用Oracle的序列 – 2010-06-04 16:28:31

回答

0

我想@OneToMany配置應該如下所示。

  • @OneToMany(的mappedBy = 「tierWeight」)