保存对象时出现以下错误。不过,类似的配置在我的项目中适用于其他模型对象。任何帮助将不胜感激。序列生成器被忽略
@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。
@luvfort也许你wnat看到http://stackoverflow.com/questions/1729723/hibernate-does-not-generate-identifier-when - 使用Oracle的序列 – 2010-06-04 16:28:31