这是我的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必须是此Department表的主键,并且该键的条目必须为DEP0001,DEP0002,DEP0003
谢谢大家的回答……最后,我在Department类中做了一些更改,并使用了一个类来生成IDs ....这是我的代码
@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
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; } }