摘自:http://blog.youkuaiyun.com/u014042146/article/details/52595624
-
-
-
-
- package com.saving.ecm.resource.entity;
-
-
- import javax.persistence.Column;
- import javax.persistence.Entity;
- import javax.persistence.GeneratedValue;
- import javax.persistence.Id;
- import javax.persistence.Table;
- import javax.xml.bind.annotation.XmlRootElement;
-
-
- import org.hibernate.annotations.GenericGenerator;
- import org.hibernate.annotations.Parameter;
-
-
-
- @XmlRootElement
- @Entity
- @Table(name = "test")
- public class Test {
- @Id
- @GeneratedValue(generator = "idGenerator")
- @GenericGenerator(name = "idGenerator", strategy = "com.saving.ecm.resource.entity.IdGenerator",
- parameters = { @Parameter(name = "dataCenterID", value = "20") ,@Parameter(name = "idLength", value = "10")})
- private String code;
-
-
- @Column(name = "name", nullable = false, columnDefinition = "varchar(48) default '' comment '名字'")
- private String name;
-
-
- public String getCode() {
- return code;
- }
-
-
- public void setCode(String code) {
- this.code = code;
- }
-
-
- public String getName() {
- return name;
- }
-
-
- public void setName(String name) {
- this.name = name;
- }
-
-
-
-
- }
模拟自定义ID生成器
- package com.saving.ecm.resource.entity;
-
-
- import java.io.Serializable;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.Properties;
-
-
- import org.hibernate.dialect.Dialect;
- import org.hibernate.engine.spi.SessionImplementor;
- import org.hibernate.id.AbstractUUIDGenerator;
- import org.hibernate.id.Configurable;
- import org.hibernate.type.Type;
-
-
-
- public class IdGenerator implements Configurable,IdentifierGenerator {
-
-
- public String dataCenterID;
- public String idLength;
-
-
- public void configure(Type type, Properties params, Dialect d) {
- this.dataCenterID = params.getProperty("dataCenterID");
- this.idLength = params.getProperty("idLength");
- }
-
-
- public Serializable generate(SessionImplementor session, Object obj) {
- return dataCenterID + idLength;
- }
-
-
- }
摘自:http://www.cnblogs.com/xmqa/p/6424386.html
Hibernate自定义主键生成
当使用Hibernate定义pojo的时候,有时候需要生成一定规则的数据表主键,这时候我们可以采用自定义主键生成方式去生成主键。
例如:
1、在pojo属性中定义数据表主键
1 @Id
2 @GeneratedValue(generator = "xmqId")
3 @GenericGenerator(name = "xmqId", strategy = "com.xmq.core.XMQGenerator")
4 @Column(name = "C_ID")
5 private String pk;
2、创建主键生成器
1 package com.xmq.core;
2
3 import java.io.Serializable;
4
5 import org.hibernate.engine.spi.SessionImplementor;
6 import org.hibernate.id.UUIDHexGenerator;
7
8 public class XMQGenerator extends UUIDHexGenerator {
9
10 public XMQGenerator () {
11 super();
12 }
13
14 @Override
15 public Serializable generate(SessionImplementor session, Object obj) {
16 return "PK_" + super.generate(session, obj);
17 }
18
19
20 }
注意:在pojo的父类中有时候带有@MappedSuperclass注解,这表示这个父类不是一个完整的实体类,也不会映射到数据库表,但是他的属性都将映射到其子类的数据表字段中。