-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 
Author Message
 Post subject: Auto increment Id not working
PostPosted: Fri Aug 04, 2006 9:46 am 
Newbie

Joined: Fri Aug 04, 2006 9:27 am
Posts: 2
Need help with Hibernate? Read this first:
http://www.hibernate.org/ForumMailingli ... AskForHelp

Hibernate version:
hibernate 3.2.0.cr2
hibernate-annotations 3.2.0.cr1
hibernate-entitymanager 3.2.0.cr1
spring 2.0-rc2

Mapping documents:
Code:
@Entity
@Table(name = "LS_BANNERS", uniqueConstraints = {@UniqueConstraint(columnNames = {"BANNERS_KEY"})})
public class Banner implements java.io.Serializable {

   // Fields


   private Long               oid;
   private String               bannerKey;
   private Integer               storeId;
   private Date               creationTime;
   private Integer               status;
   private Integer               deleted;
   private Date               lastModTime;
   private Integer               linkType;
   private String               linkTarget;
   private String               imageFr;
   private String               imageDe;
   private String               imageEn;
   private String               titleFr;
   private String               titleDe;
   private String               titleEn;
   private String               textFr;
   private String               textDe;
   private String               textEn;
   private String               targetDept;
   private Integer               displayOrder;
   private Date               startDate;
   private Date               endDate;
   private Integer               noCache;
   private String               style;
   private String               sdescFr;
   private String               sdescDe;
   private String               sdescEn;
   private Set<PortalPageBanner>   portalPageBanners   = new HashSet<PortalPageBanner>(0);

   // Constructors

   /** default constructor */
   public Banner() {
   }

   

   // Property accessors
        @Id @GeneratedValue
   @Column(name = "OID", unique = true, nullable = false, insertable = true, updatable = true)
   public Long getOid() {
      return this.oid;
   }

   public void setOid(Long oid) {
      this.oid = oid;
   }

   @Column(name = "BANNERS_KEY", unique = true, nullable = false, insertable = true, updatable = true, length = 128)
   public String getBannerKey() {
      return this.bannerKey;
   }

   public void setBannerKey(String bannersKey) {
      this.bannerKey = bannersKey;
   }

   @Column(name = "STORE_ID", unique = false, nullable = false, insertable = true, updatable = true)
   public Integer getStoreId() {
      return this.storeId;
   }

   public void setStoreId(Integer storeId) {
      this.storeId = storeId;
   }

   @Column(name = "CREATION_TIME", unique = false, nullable = false, insertable = true, updatable = true, length = 23)
   public Date getCreationTime() {
      return this.creationTime;
   }

   public void setCreationTime(Date creationTime) {
      this.creationTime = creationTime;
   }

   @Column(name = "STATUS", unique = false, nullable = false, insertable = true, updatable = true)
   public Integer getStatus() {
      return this.status;
   }

   public void setStatus(Integer status) {
      this.status = status;
   }

   @Column(name = "DELETED", unique = false, nullable = false, insertable = true, updatable = true)
   public Integer getDeleted() {
      return this.deleted;
   }

   public void setDeleted(Integer deleted) {
      this.deleted = deleted;
   }

   @Column(name = "LAST_MOD_TIME", unique = false, nullable = false, insertable = true, updatable = true, length = 23)
   @Version
   public Date getLastModTime() {
      return this.lastModTime;
   }

   public void setLastModTime(Date lastModTime) {
      this.lastModTime = lastModTime;
   }

   @Column(name = "LINK_TYPE", unique = false, nullable = true, insertable = true, updatable = true)
   public Integer getLinkType() {
      return this.linkType;
   }

   public void setLinkType(Integer linkType) {
      this.linkType = linkType;
   }

   @Column(name = "LINK_TARGET", unique = false, nullable = true, insertable = true, updatable = true, length = 256)
   public String getLinkTarget() {
      return this.linkTarget;
   }

   public void setLinkTarget(String linkTarget) {
      this.linkTarget = linkTarget;
   }

   @Column(name = "IMAGE_FR", unique = false, nullable = true, insertable = true, updatable = true, length = 256)
   public String getImageFr() {
      return this.imageFr;
   }

   public void setImageFr(String imageFr) {
      this.imageFr = imageFr;
   }

   @Column(name = "IMAGE_DE", unique = false, nullable = true, insertable = true, updatable = true, length = 256)
   public String getImageDe() {
      return this.imageDe;
   }

   public void setImageDe(String imageDe) {
      this.imageDe = imageDe;
   }

   @Column(name = "IMAGE_UK", unique = false, nullable = true, insertable = true, updatable = true, length = 256)
   public String getImageEn() {
      return this.imageEn;
   }

   public void setImageEn(String imageEn) {
      this.imageEn = imageEn;
   }

   @Column(name = "TITLE_FR", unique = false, nullable = true, insertable = true, updatable = true, length = 256)
   public String getTitleFr() {
      return this.titleFr;
   }

   public void setTitleFr(String titleFr) {
      this.titleFr = titleFr;
   }

   @Column(name = "TITLE_DE", unique = false, nullable = true, insertable = true, updatable = true, length = 256)
   public String getTitleDe() {
      return this.titleDe;
   }

   public void setTitleDe(String titleDe) {
      this.titleDe = titleDe;
   }

   @Column(name = "TITLE_UK", unique = false, nullable = true, insertable = true, updatable = true, length = 256)
   public String getTitleEn() {
      return this.titleEn;
   }

   public void setTitleEn(String titleEn) {
      this.titleEn = titleEn;
   }

   @Column(name = "TEXT_FR", unique = false, nullable = true, insertable = true, updatable = true)
   public String getTextFr() {
      return this.textFr;
   }

   public void setTextFr(String textFr) {
      this.textFr = textFr;
   }

   @Column(name = "TEXT_DE", unique = false, nullable = true, insertable = true, updatable = true)
   public String getTextDe() {
      return this.textDe;
   }

   public void setTextDe(String textDe) {
      this.textDe = textDe;
   }

   @Column(name = "TEXT_UK", unique = false, nullable = true, insertable = true, updatable = true)
   public String getTextEn() {
      return this.textEn;
   }

   public void setTextEn(String textEn) {
      this.textEn = textEn;
   }

   @Column(name = "TARGET_DEPT", unique = false, nullable = true, insertable = true, updatable = true)
   public String getTargetDept() {
      return this.targetDept;
   }

   public void setTargetDept(String targetDept) {
      this.targetDept = targetDept;
   }

   @Column(name = "DISPLAY_ORDER", unique = false, nullable = true, insertable = true, updatable = true)
   public Integer getDisplayOrder() {
      return this.displayOrder;
   }

   public void setDisplayOrder(Integer displayOrder) {
      this.displayOrder = displayOrder;
   }

   @Column(name = "START_DATE", unique = false, nullable = false, insertable = true, updatable = true, length = 23)
   public Date getStartDate() {
      return this.startDate;
   }

   public void setStartDate(Date startDate) {
      this.startDate = startDate;
   }

   @Column(name = "END_DATE", unique = false, nullable = false, insertable = true, updatable = true, length = 23)
   public Date getEndDate() {
      return this.endDate;
   }

   public void setEndDate(Date endDate) {
      this.endDate = endDate;
   }

   @Column(name = "NO_CACHE", unique = false, nullable = true, insertable = true, updatable = true)
   public Integer getNoCache() {
      return this.noCache;
   }

   public void setNoCache(Integer noCache) {
      this.noCache = noCache;
   }

   @Column(name = "STYLE", unique = false, nullable = true, insertable = true, updatable = true, length = 80)
   public String getStyle() {
      return this.style;
   }

   public void setStyle(String style) {
      this.style = style;
   }

   @Column(name = "SDESC_FR", unique = false, nullable = true, insertable = true, updatable = true)
   public String getSdescFr() {
      return this.sdescFr;
   }

   public void setSdescFr(String sdescFr) {
      this.sdescFr = sdescFr;
   }

   @Column(name = "SDESC_DE", unique = false, nullable = true, insertable = true, updatable = true)
   public String getSdescDe() {
      return this.sdescDe;
   }

   public void setSdescDe(String sdescDe) {
      this.sdescDe = sdescDe;
   }

   @Column(name = "SDESC_UK", unique = false, nullable = true, insertable = true, updatable = true)
   public String getSdescEn() {
      return this.sdescEn;
   }

   public void setSdescEn(String sdescEn) {
      this.sdescEn = sdescEn;
   }

   @OneToMany(cascade = {CascadeType.ALL}, fetch = FetchType.LAZY, mappedBy = "banner")
   public Set<PortalPageBanner> getPortalPageBanners() {
      return this.portalPageBanners;
   }

   public void setPortalPageBanners(Set<PortalPageBanner> portalPageBanners) {
      this.portalPageBanners = portalPageBanners;
   }

}




Code between sessionFactory.openSession() and session.close():
Code:
                Banner banner = new Banner();
      banner.setBannerKey("TEST-BANNER");
      banner.setStoreId(101);
      banner.setDeleted(0);
      banner.setDisplayOrder(1);
      banner.setEndDate(new Date());
      banner.setStartDate(new Date());
      banner.setCreationTime(new Date());
      banner.setLinkTarget("test/test.jsp");
      banner.setLinkType(1);
      banner.setStatus(1);
      banner.setTextDe("text_de");
      banner.setTextFr("text_fr");
      banner.setTextEn("text_en");
               entityManager.persist(banner);



Full stack trace of any exception that occurs:
The column OID in table LS_BANNERS does not allow null values.
Code:
org.springframework.dao.DataIntegrityViolationException: org.hibernate.exception.ConstraintViolationException: could not insert: [com.leshop.glass.portal.bm.Banner]; nested exception is javax.persistence.EntityExistsException: org.hibernate.exception.ConstraintViolationException: could not insert: [com.leshop.glass.portal.bm.Banner]
Caused by: javax.persistence.EntityExistsException: org.hibernate.exception.ConstraintViolationException: could not insert: [com.leshop.glass.portal.bm.Banner]
   at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:555)
   at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:192)
   at org.springframework.orm.jpa.JpaTemplate$5.doInJpa(JpaTemplate.java:264)
   at org.springframework.orm.jpa.JpaTemplate.execute(JpaTemplate.java:192)
   at org.springframework.orm.jpa.JpaTemplate.persist(JpaTemplate.java:262)
   at com.leshop.glass.common.dao.AbstractDAO.save(AbstractDAO.java:20)
   at com.leshop.glass.portal.TestPortalPageDAO.testPageWithBanner(TestPortalPageDAO.java:67)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at junit.framework.TestCase.runTest(TestCase.java:154)
   at junit.framework.TestCase.runBare(TestCase.java:127)
   at junit.framework.TestResult$1.protect(TestResult.java:106)
   at junit.framework.TestResult.runProtected(TestResult.java:124)
   at junit.framework.TestResult.run(TestResult.java:109)
   at junit.framework.TestCase.run(TestCase.java:118)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: org.hibernate.exception.ConstraintViolationException: could not insert: [com.leshop.glass.portal.bm.Banner]
   at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
   at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
   at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:40)
   at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2044)
   at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2481)
   at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:47)
   at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
   at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:290)
   at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:180)
   at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:108)
   at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:131)
   at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:87)
   at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:611)
   at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:603)
   at org.hibernate.engine.CascadingAction$8.cascade(CascadingAction.java:202)
   at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:213)
   at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:157)
   at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:108)
   at org.hibernate.engine.Cascade.cascade(Cascade.java:248)
   at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:412)
   at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:261)
   at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:180)
   at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:108)
   at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:131)
   at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:87)
   at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:611)
   at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:603)
   at org.hibernate.engine.CascadingAction$8.cascade(CascadingAction.java:202)
   at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:213)
   at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:157)
   at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:108)
   at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:290)
   at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:185)
   at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:160)
   at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:108)
   at org.hibernate.engine.Cascade.cascade(Cascade.java:248)
   at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:437)
   at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:326)
   at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:180)
   at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
   at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:131)
   at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:87)
   at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38)
   at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:620)
   at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:594)
   at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:598)
   at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:186)
   ... 18 more
Caused by: com.sybase.jdbc3.jdbc.SybSQLException: The column OID in table LS_BANNERS does not allow null values.

   at com.sybase.jdbc3.tds.Tds.a(Unknown Source)
   at com.sybase.jdbc3.tds.Tds.nextResult(Unknown Source)
   at com.sybase.jdbc3.jdbc.ResultGetter.nextResult(Unknown Source)
   at com.sybase.jdbc3.jdbc.SybStatement.nextResult(Unknown Source)
   at com.sybase.jdbc3.jdbc.SybStatement.nextResult(Unknown Source)
   at com.sybase.jdbc3.jdbc.SybStatement.executeLoop(Unknown Source)
   at com.sybase.jdbc3.jdbc.SybStatement.execute(Unknown Source)
   at com.sybase.jdbc3.jdbc.SybPreparedStatement.execute(Unknown Source)
   at org.hibernate.id.IdentityGenerator$InsertSelectDelegate.executeAndExtract(IdentityGenerator.java:108)
   at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:33)
   ... 62 more



Name and version of the database you are using:
Sybase 12.5 (using Jconn3 - JDBC3)

The generated SQL (show_sql=true):
Code:
insert into LS_BANNERS (TEXT_FR, BANNERS_KEY, START_DATE, END_DATE, IMAGE_DE, IMAGE_FR, IMAGE_UK, LINK_TARGET, STYLE, TARGET_DEPT, TEXT_DE, TEXT_UK, SDESC_DE, SDESC_FR, SDESC_UK, TITLE_DE, TITLE_FR, TITLE_UK, DELETED, DISPLAY_ORDER, LINK_TYPE, NO_CACHE, STATUS, LAST_MOD_TIME, STORE_ID, CREATION_TIME) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)



In the generated SQL above, we can se that OID column isn't included.
It seems that the '@Id @GeneratedValue' doesn't automatically generate the next value.
I also tried with '@Id @GeneratedValue (strategy=GenerationType.AUTO)' but it does the same.

Why the OID column not included in the SQL insert statment ?

How can I tell Hibernate that my OID is an autoincremented value ?

Thanks for your help.
Hervé


Top
 Profile  
 
 Post subject:
PostPosted: Fri Aug 04, 2006 4:52 pm 
Expert
Expert

Joined: Sat Oct 25, 2003 8:49 am
Posts: 490
Location: Vrhnika, Slovenia
Do you have Dialect properly set?

What should be the correct sybase insert query which would set incremented value?

Code:
    @Id @GeneratedValue
   @Column(name = "OID", unique = true, nullable = false, insertable = true, updatable = true)


Should here really be 'nullable = false'?
Set it to true and test again.


Top
 Profile  
 
 Post subject:
PostPosted: Mon Aug 07, 2006 2:41 am 
Newbie

Joined: Fri Aug 04, 2006 9:27 am
Posts: 2
alesj wrote:
Do you have Dialect properly set?

What should be the correct sybase insert query which would set incremented value?

Code:
    @Id @GeneratedValue
   @Column(name = "OID", unique = true, nullable = false, insertable = true, updatable = true)


Should here really be 'nullable = false'?
Set it to true and test again.


Thanks for your answer but unfortunatliy it doesn't work.
Yes, I defined a dialect in my persistence.xml file :
Code:
<property name="hibernate.dialect"
            value="org.hibernate.dialect.SybaseDialect" />


I also tried to remove all annotations. I tried with:
Code:
   @Id @GeneratedValue (strategy=GenerationType.AUTO)
   @Column(name = "OID")
   public Long getOid() {
      return this.oid;
   }


Does anyone have an idea on why my auto increment id doesn't work ?
Thanks for you help.

Hervé


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.