2013-12-20 64 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