【问题标题】:JPA bigdecimal problem in hibernate休眠中的JPA bigdecimal问题
【发布时间】:2010-12-14 13:42:55
【问题描述】:

我已经使用了休眠的 maven 插件,它生成了实体类,但没有识别与 ID 字段相关的序列,id 字段生成为 BigDecimal ......现在即使我通过代码指向现有序列,如..


@Entity
@javax.persistence.SequenceGenerator(

name = "SEQ_NATUREMASTER", sequenceName = "aop_teqachers_school_nature_id_seq")
@Table(name = "aop_teachers_school_nature_master", schema = "public", uniqueConstraints = @UniqueConstraint(columnNames = "school_nature"))
public class AopTeachersSchoolNatureMaster implements java.io.Serializable {

 /**
  * Above code is added after generating entity class
  */

 private BigDecimal id;

我收到错误


INFO : aop.web.teacher.controller.SchoolMasterInsertController - Attemped saving!testnature
Hibernate: select nextval ('aop_teqachers_school_nature_id_seq')
Dec 14, 2010 6:57:26 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet appServlet threw exception
org.hibernate.id.IdentifierGenerationException: this id generator generates long, integer, short or string
 at org.hibernate.id.IdentifierGeneratorHelper.get(IdentifierGeneratorHelper.java:123)
 at org.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:101)
 at org.hibernate.id.SequenceHiLoGenerator.generate(SequenceHiLoGenerator.java:81)
 at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:122)
 at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:69)
 at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:154)
 at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:110)
 at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:61)
 at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:650)
 at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:624)
 at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:628)
 at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:308)

【问题讨论】:

    标签: java hibernate postgresql jpa sequence


    【解决方案1】:

    我不会选择十进制 ID。而且我真的认为您也不需要BigInteger。所以将其更改为intlong。 (这个失败的原因是序列不能生成类型BigX

    【讨论】:

    • 小数的身份比较会很有趣。生成器可以是 PI 序列!!! :)
    猜你喜欢
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2014-08-08
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多