2012-06-23 27 views
15

Tôi đang viết ứng dụng Playframework 2.0 sử dụng Scala và Anorm để truy cập db.Mục đích của Porm của anorm là gì?

Hiện tại tôi đang sử dụng Pk[Long] cho các trường id và tôi lo lắng về việc cần thêm get cuộc gọi để truy cập giá trị thực. Vì vậy, tôi bắt đầu sử dụng đồng bằng Long cho các trường id và mọi thứ vẫn hoạt động hoàn hảo.

Điều gì Pk là dành cho, và tôi có nên sử dụng nó thay vì loại đồng bằng không? Có phải Pk mang lại cho tôi các tính năng/lợi ích bổ sung trên các loại đồng bằng không?

Trả lời

18

Pk cho phép bạn chỉ định khóa chính đã nhập.

Ngoài ra, nói rằng bạn có một mô hình giả tạo như thế này:

case class MyModel(id: Pk[Long], foo: String) 

Bạn phải vì lợi ích của xây dựng một thể hiện của mô hình của bạn với:

MyModel(anorm.NotAssigned, "notKnownAtRuntime") 

... nếu cơ sở dữ liệu của bạn là trách nhiệm để tạo khóa của bạn hoặc cách khác:

MyModel(anorm.Id(123L), "knownAtRuntime") 
+0

Tôi biết về 'NotAssigned', thật tiện lợi, vì id tạo automatica lly. Tôi chỉ nghĩ có cái gì đó khác. Cảm ơn bạn anyway! – lambdas

+4

Tại sao không sử dụng 'Option [Long]' và sau đó khởi tạo các đối tượng của bạn với 'None' hoặc' Some (123L) '? – maklemenz

+2

@mklemenz vì '' 'trường hợp lớp MyModel (id: Pk [Long], id2: Pk [Long])' '' không nên biên dịch nơi '' 'trường hợp lớp MyModel (id: Option [Long], id2: Option [ Long]) '' 'biên dịch –

Các vấn đề liên quan