Benutzerdefinierte generische Hibernate idgeneratortypeJava

Java-Forum
Anonymous
 Benutzerdefinierte generische Hibernate idgeneratortype

Post by Anonymous »

Ich möchte einen wiederverwendbaren benutzerdefinierten ID -Generator mit Hibernate erstellen, damit ich so etwas tun kann: < /p>

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;
}
Und ich möchte, dass meine CustomIdGenerator Klasse die angegebenen Werte von Customid :
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;
}
}
Das Ergebnis sollte sein, dass es IDs wie "usr00001", "usr00002" usw. generiert.>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post