0
我想將運行時生成的實體UUID複製到另一個字段。 實體ID經由代碼生成描述如下:持續時間複製實體ID
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值(例如,使用根父級的id設置idCopy)。是否可以使用@PrePersist? Eclipse Link在保持持久性之前保證UUID存在嗎? – user1062078 2012-04-23 16:09:17
您可以隨時重寫子類中的'setId()'以表現不同。我不確定'@ PrePersist',但它應該很容易就可以自己測試行爲。 – 2012-04-23 16:16:59