2015-07-01 8 views
8

यहाँ मेरी POJO वर्गकैसे हाइबरनेट का उपयोग कर कस्टम क्रमांक उत्पन्न करने के लिए, जबकि यह तालिका के प्राथमिक कुंजी होना चाहिए

@Entity 

public class Department { 


@Id 
@GeneratedValue(strategy=GenerationType.IDENTITY) 

@Column(name="Department_Id") 

private Integer deptId; 


@Column(name="Department_Name",unique=true,nullable=false) 
private String deptName; 


@Column(name="Department_Description") 
@NotNull 
private String deptDesc; 
    //geters and setters 

है क्या मैं चाहता हूँ कि department_id इस कुंजी चाहिए के लिए इस विभाग की मेज और प्रविष्टियों की प्राथमिक कुंजी होना चाहिए है DEP0001, DEP0002, DEP003

+0

http://supportmycode.com/2014/08/22/custom-id-generator-in-hibernate/ –

+0

क्या डीबी प्रयोग कर रहे हैं? – mrh

+0

मैं mysql –

उत्तर

12

आपकी प्रतिक्रिया के लिए सभी को धन्यवाद ...... अंततः मैंने अपने विभाग वर्ग में कुछ बदलाव किए हैं और आईडी बनाने के लिए कक्षा का उपयोग किया ........ यहां मेरा कोड

@Entity 
public class Department { 

@Id 
@GenericGenerator(name = "sequence_dep_id", strategy = "com.xyz.ids.DepartmentIdGenerator") 
@GeneratedValue(generator = "sequence_dep_id") 
@Column(name="Department_Id") 
private String deptId; 

@Column(name="Department_Name",unique=true,nullable=false) 
private String deptName; 


@Column(name="Department_Description") 
@NotNull 
private String deptDesc; 

//getters and setters 
,210

DepartmentIdGenerator.java

package com.xyz.ids; 

import java.io.Serializable; 
import java.sql.*; 
import org.hibernate.HibernateException; 
import org.hibernate.engine.spi.SessionImplementor; 
import org.hibernate.id.IdentifierGenerator; 

public class DepartmentIdGenerator implements IdentifierGenerator{ 

    @Override 
    public Serializable generate(SessionImplementor session, Object object) 
      throws HibernateException { 

     String prefix = "DEP"; 
     Connection connection = session.connection(); 

     try { 
      Statement statement=connection.createStatement(); 

      ResultSet rs=statement.executeQuery("select count(Department_Id) as Id from demo.Department"); 

      if(rs.next()) 
      { 
       int id=rs.getInt(1)+101; 
       String generatedId = prefix + new Integer(id).toString(); 
       System.out.println("Generated Id: " + generatedId); 
       return generatedId; 
      } 
     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 


     return null; 
    } 

} 
+0

ग्रहण इस बारे में शिकायत करता है कि नामक जनरेटर को दृढ़ता इकाई – erickdeoliveiraleal

+0

में परिभाषित किया गया है, क्या आपने इसे persistence.xml में भी परिभाषित किया है या यह ग्रहण में बग है? – erickdeoliveiraleal

+2

इसकी कमी तब होती है जब हम तालिका से एक प्रविष्टि हटाते हैं और नया निर्माण करने का प्रयास करते हैं। हम प्राथमिक कुंजी बाधा उल्लंघन कर सकते हैं! –

संबंधित मुद्दे