2011-09-13 33 views
5

Tôi muốn sử dụng UUID thay vì id thông thường trên mô hình của tôi.UUID với Khung Chơi

Điều này có thể được thực hiện với khung chơi không?

Trả lời

6

Đầu tiên không mở rộng (play.db.jpa.Model) Mô hình trong Mô hình bạn muốn tạo Id nhưng sử dụng GenericModel.

thì bạn có thể sử dụng lớp trợ giúp được gọi khi đối tượng được tạo (trong hàm tạo).

hoặc gọi lớp helper khi lưu (như vậy, tôi phải tạo wrapper DAO, quá trình tiết kiệm được thực hiện trong wrapper DAO không nằm trong đối tượng để tôi có thể tạo ra id lưu các đối tượng)

hoặc nếu bạn muốn tiếp cận đơn giản hơn sử dụng JPA UUID. Xem mã bên dưới.

@Entity 
public class User extends GenericModel { 
    @Id 
    @GeneratedValue(generator = "system-uuid") 
    @GenericGenerator(name = "system-uuid", strategy = "uuid") 
    public String id; 
} 
+0

GenericModel: đây không phải là mô hình chống sao? xin vui lòng xem: http://en.wikipedia.org/wiki/BaseBean – Kowser

+0

xem nhận xét trên wiki và tính trung lập của wiki có nội dung "Tính trung lập của bài viết này bị tranh chấp", được gọi là mẫu chống này không phù hợp. – indrap

+0

vâng, tôi hiểu rồi. Cần nghiên cứu thêm để làm rõ vấn đề. – Kowser

5

Vâng, lớp Mô hình chỉ là lớp con của GenericModel, thêm thuộc tính, phương thức và chú thích để cung cấp Long được tạo thành thuộc tính @Id cho các lớp mô hình của bạn.

Nếu bạn không muốn điều đó, bạn có thể phân lớp GenericModel thay thế và cung cấp @Id của riêng bạn. Trong trường hợp của bạn, đó sẽ là một String để giữ UUID. Bạn sẽ cần phải đưa ra một chiến lược để khởi tạo nó trên các trường hợp mô hình mới, mặc dù.

Tôi không biết về chiến lược dựng sẵn do JPA cung cấp để tạo UUID. Một phương thức đơn giản là có một lớp trợ giúp mà bạn có thể gọi một phương thức để nhận UUID mới và đảm bảo rằng bạn gọi mỗi khi bạn tạo một mô hình mới.