自定义ID生成
package com.thsware.framework.domain;
import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.id.UUIDGenerator;
import java.io.Serializable;
import java.lang.reflect.Method;
/**
* @ClassName: CustomUUIDGenerator
* @Description:
* @Version 1.0
*/
public class CustomUUIDGenerator extends UUIDGenerator {
@Override
public Serializable generate(SharedSessionContractImplementor session, Object object) throws HibernateException {
Object id = getFieldValueByName("id", object);
if (id != null) {
return (Serializable) id;
}
return super.generate(session, object);
}
private Object getFieldValueByName(String fieldName, Object o) {
try {
String firstLetter = fieldName.substring(0, 1).toUpperCase();
String getter = "get" + firstLetter + fieldName.substring(1);
Method method = o.getClass().getMethod(getter, new Class[] {});
Object value = method.invoke(o, new Object[] {});
return value;
} catch (Exception e) {
return null;
}
}
}
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "com.thsware.framework.domain.CustomUUIDGenerator")
private String id;