0
Я хочу скопировать UUID объекта, сгенерированный во время выполнения в другое поле. идентификатор объекта генерируется с помощью кода описано ниже:Копировать идентификатор объекта в постоянное время
package eclipselink.example;
public class UUIDSequence extends Sequence implements SessionCustomizer {
public UUIDSequence() {
super();
}
public UUIDSequence(String name) {
super(name);
}
@Override
public Object getGeneratedValue(Accessor accessor,
AbstractSession writeSession, String seqName) {
return UUID.randomUUID().toString().toUpperCase();
}
...
public void customize(Session session) throws Exception {
UUIDSequence sequence = new UUIDSequence("system-uuid");
session.getLogin().addSequence(sequence);
}
}
Persitence.xml:
property name="eclipselink.session.customizer" value="eclipselink.example.UUIDSequence"
Сущность:
public abstract class MyEntity{
private String id;
private String idCopy;
@Id
@Basic(optional = false)
@GeneratedValue(generator="system-uuid")
@XmlElement(name = "ID")
public String getId() {
return id;
}
}
Как можно поручить JPA (Eclipse, ссылка) скопировать UUID, сгенерированный во время выполнения, в поле idCopy
?
Это решение возможно, но в случае наследования объектов из MyEntity мне могут потребоваться разные значения idCopy (например, установка idCopy с идентификатором корневого родителя). Возможно ли использовать @PrePersist? Обеспечивает ли Eclipse Link существование UUID до настойчивости? – user1062078
Вы всегда можете переопределить 'setId()' в классах потомков, чтобы вести себя по-другому. Я не уверен в '@ PrePersist', но это должно быть достаточно легко, чтобы протестировать поведение самостоятельно. –