Code: Select all
@Id
@CustomId(name = "USR")
private String id;
< /code>
und verwenden Sie es über verschiedene Entitätsmodelle hinweg. Als ich mir die offiziellen Dokumente und online angesehen habe, habe ich meine Antwort nicht gefunden. Das habe ich bisher: < /p>
import org.hibernate.annotations.IdGeneratorType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
@IdGeneratorType(CustomIdGenerator.class)
@Retention(RetentionPolicy.RUNTIME)
@Target({FIELD, METHOD})
public @interface CustomId {
String name();
int startWith() default 1;
int incrementBy() default 1;
}
verwendet
Code: Select all
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.id.IdentifierGenerator;
public class CustomIdGenerator implements IdentifierGenerator {
private static int counter = startWith;
@Override
public Object generate(SharedSessionContractImplementor session, Object object) {
String prefix = name;
String suffix = String.format("%05d", counter += incrementBy);
return prefix + suffix;
}
}