Anu Alex
Anu Alex

Reputation: 240

which generated class is using for string type primary key in hibernate java? or any need of generator class for string type

Which generated class is using for String type Primary key in Hibernate Java? or any need of Generator Class for String type?

an error came when I am using update

org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1

This is my Entity class Book.java

import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
//import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import org.springframework.format.annotation.DateTimeFormat;
@Entity
@Table(name="book1")
public class Book {

    @Id
    @Column(unique=true,length=20)
    private String ACC_NO;
    private String CALL_NO;
    private String AUTHOR;
    private String TITLE;
    private String IMPRINT;
    private String YEAR;
    private String EDITION;
    private String SUBJECT;
    private String SERIES;
    private String PAGES;
    @DateTimeFormat(pattern="mm/dd/yyyy")
    private Date DATE_RELEASE;
    private String BOOK_STATUS;
    private Byte RESER_STATUS;
    public String getACC_NO() {
        return ACC_NO;
    }
    public void setACC_NO(String aCC_NO) {
        ACC_NO = aCC_NO;
    }
    public String getCALL_NO() {
        return CALL_NO;
    }
    public void setCALL_NO(String cALL_NO) {
        CALL_NO = cALL_NO;
    }
    public String getAUTHOR() {
        return AUTHOR;
    }
    public void setAUTHOR(String aUTHOR) {
        AUTHOR = aUTHOR;
    }
    public String getTITLE() {
        return TITLE;
    }
    public void setTITLE(String tITLE) {
        TITLE = tITLE;
    }
    public String getIMPRINT() {
        return IMPRINT;
    }
    public void setIMPRINT(String iMPRINT) {
        IMPRINT = iMPRINT;
    }
    public String getYEAR() {
        return YEAR;
    }
    public void setYEAR(String yEAR) {
        YEAR = yEAR;
    }
    public String getEDITION() {
        return EDITION;
    }
    public void setEDITION(String eDITION) {
        EDITION = eDITION;
    }
    public String getSUBJECT() {
        return SUBJECT;
    }
    public void setSUBJECT(String sUBJECT) {
        SUBJECT = sUBJECT;
    }
    public String getSERIES() {
        return SERIES;
    }
    public void setSERIES(String sERIES) {
        SERIES = sERIES;
    }
    public String getPAGES() {
        return PAGES;
    }
    public void setPAGES(String pAGES) {
        PAGES = pAGES;
    }
    public String getBOOK_STATUS() {
        return BOOK_STATUS;
    }
    public void setBOOK_STATUS(String bOOK_STATUS) {
        BOOK_STATUS = bOOK_STATUS;
    }
    public Byte getRESER_STATUS() {
        return RESER_STATUS;
    }
    public void setRESER_STATUS(Byte rESER_STATUS) {
        RESER_STATUS = rESER_STATUS;
    }
    public Date getDATE_RELEASE() {
        return DATE_RELEASE;
    }
    public void setDATE_RELEASE(Date dATE_RELEASE) {
        DATE_RELEASE = dATE_RELEASE;
    }
}


**Update command in BookDAOImpl.java is below use for both save and Update**

@Override
    @Transactional
    public void saveBook(Book Book) {
        sessionFactory.getCurrentSession().saveOrUpdate(Book);
    }

Upvotes: 0

Views: 121

Answers (1)

Naros
Naros

Reputation: 21123

For String-based primary keys, you have two options:

  • Use one of the UUID generators to store a generated UUID as a String.
  • Write your own String-based custom generator.

The other generators in Hibernate primarily deal with numeric values that are either obtained from a table specific IDENTITY or AUTO_INCREMENT based column or a SEQUENCE supplied either by the database's sequence support or the custom hibernate_sequences table.

Upvotes: 1

Related Questions