2013-04-14 29 views
5

Tôi đang cố gắng viết một lớp BaseDao đơn giản bằng cách sử dụng khung ORM squeryl tuyệt vời.giá trị === không phải là thành viên của tham số kiểu TKey (sử dụng Squeryl)

Tuy nhiên, tôi đã gặp phải sự cố khi sử dụng các phím được nhập chung. Tôi nhận được một lỗi biên dịch khi tôi cố gắng và sử dụng toán tử '===' trong lớp BaseDao chung của tôi. Các lỗi biên dịch là: giá trị === chưa là thành viên của kiểu tham số TKey

lớp dao của tôi với phương pháp rắc rối của nó được định nghĩa là:

import org.squeryl.PrimitiveTypeMode._ 
import org.squeryl._ 

abstract class BaseDao[TKey, T <: BaseEntity[TKey]](val table: Table[T]) { 

    def delete(entity: T) : Boolean = { 
    table.deleteWhere(record => record.id === entity.id) //This is where I get the compile error 
    } 
} 

BaseEntity được định nghĩa là:

abstract class BaseEntity[TKey] extends KeyedEntity[TKey] 

Tôi nhập PrimitiveTypeMode trong lớp Dao của mình quá ... Mặc dù đầu tiên của tôi là TKey cần phải bị ràng buộc với bất kỳ toán tử === nào bị ràng buộc, nhưng khi nhìn vào nguồn, dường như không có được bất kỳ ràng buộc rõ ràng xung quanh nhà điều hành, vì vậy tôi là một chút bị mất.

Nhà điều hành được xác định trong nguồn squeryl đây: https://github.com/max-l/Squeryl/blob/master/src/main/scala/org/squeryl/dsl/TypedExpression.scala

+0

Bạn có thứ gì khác trong phạm vi có === được xác định không? Ví dụ, scalaz có an toàn bằng ===. –

+0

Xin chào @TaylorLeese, tôi vừa thêm hai mục nhập mà tôi có trong lớp BaseDao của mình vào câu hỏi. Với hai nhập khẩu đó, việc triển khai cụ thể của tôi về các lớp Dao hoạt động tốt (nghĩa là toán tử === có thể được sử dụng với một thuộc tính Int và đối số Int) – Robert

+0

Câu trả lời có thể tìm thấy ở đây: https://groups.google .com/forum /? fromgroups = #! topic/squeryl/CiBatiSnIug – jcern

Trả lời

0

Tôi không nghĩ rằng điều này có thể được thực hiện trong Squeryl. Squeryl không hỗ trợ các phím được gõ chung - nó sử dụng sự phản chiếu Java để lấy kiểu của chúng, được loại bỏ trong thời gian chạy, và do đó cho rằng chúng là kiểu Object.

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