2013-12-20 94 views
0

使用Play Framework 2我需要根据外部世界的模型ID(不想公开模型的真实ID)生成唯一的ID。 如何使用Ebean或其他方式来完成?在播放框架2中生成来自ID的外部ID

例如我的模型是:

@Entity 
public class User extends Model { 
    @Id 
    public Long id; 

    //Generate unique id based on id, for the outside world 
    public Long externalId; 
} 
+0

这个外部ID是只是为了显示目的是什么? – memainjm

+0

用于在URL中显示,并在请求来自网页时引用用户。 – Benchik

回答

2

好了,你可以使用id二进制或十六进制表示。

但你可能想要达到的是隐藏你的id的增长幅度。如果是,那么你的选择是UUID:http://en.wikipedia.org/wiki/Universally_unique_identifier

也可以看看这个例子应用程序:https://github.com/jamesward/play2-ebean-uuid

+0

谢谢,我查看了链接中的示例。我发现他们使用了一个类型为UUID的@Id,但是这个ID正暴露给客户端。我想为应用程序使用一个id(内部),而另一个使用外部应用程序。当客户提供给我这个外部ID时,我需要能够通过这个外部ID找到实体。我认为这种分离为应用程序提供了更多的安全性。 – Benchik

+0

好的。那么,使用普通的内部ID作为主键和使用UUID的另一个唯一字段会停止什么? – cosmolev

+0

据我所知,Id由DB处理,并且线程安全,而UUID不是线程安全的。 有没有办法确保它是线程安全的? 使它同步会产生很大的性能问题吗? – Benchik