मैं स्कैला के लिए नया हूं और यहां तक कि जो भी मैं हासिल करने की कोशिश कर रहा हूं वह जावा के साथ बहुत आसान है, मुझे स्कैला से उलझन में लग रहा है।उपयोगकर्ता प्राप्त करें और सभी अनुमतियां भरें
मैं क्या चाहता हूँ एक User
मिल और फिर अपने Permission
भरने एक और क्वेरी का उपयोग और उसके Role
और उसके अलग-अलग Permissions
के आधार पर की जाती है।
तक जानता हूँ कि मैं निम्नलिखित कोड है:
/**
* Finds a user by its loginInfo.
*
* @param loginInfo The loginInfo of the user to find.
* @return The found user or None if no user for the given login info could be found.
*/
def find(loginInfo: LoginInfo): Future[Option[models.admin.User]] = {
val userQuery = for {
dbLoginInfo <- loginInfoQuery(loginInfo)
dbUserLoginInfo <- Userlogininfo.filter(_.logininfoid === dbLoginInfo.id)
dbUser <- User.filter(_.userid === dbUserLoginInfo.userid)
user <- dbUser match {
case u =>
val permissionQuery = for {
dbUserPermission <- Userpermission.filter(_.userid === u.userid)
dbPermission <- Permission.filter(_.id === dbUserPermission.permissionid)
} yield dbPermission
val rolePermissionQuery = for {
dbUserRole <- Userrole.filter(_.userid === u.userid)
dbRole <- Role.filter(_.id === dbUserRole.roleid)
dbRolePermission <- Rolepermission.filter(_.roleid === dbRole.id)
dbPermission <- Permission.filter(_.id === dbRolePermission.permissionid)
} yield dbPermission
val unionPermissionQuery = permissionQuery union rolePermissionQuery
db.run(unionPermissionQuery.result).map(_.map(_.name).toList).map { permission =>
models.admin.User(
UUID.fromString(u.userid.toString),
u.firstname.toString,
u.lastname.toString,
u.jobtitle.toString,
loginInfo,
u.email.toString,
false,
Some(permission),
false)
}
case None => None
}
} yield user
db.run(userQuery.result.headOption)
}
मैं निम्नलिखित त्रुटियाँ गया:
pattern type is incompatible with expected type;
[error] found : None.type
[error] required: UserDAOImpl.this.User
[error] case None => None
[error] ^
[error] play/modules/admin/app/models/daos/impl/UserDAOImpl.scala:36: value map is not a member of Object
[error] user <- dbUser match {
[error] ^
[error] play/modules/admin/app/models/daos/impl/UserDAOImpl.scala:34: type mismatch;
[error] found : UserDAOImpl.this.Userlogininfo => slick.lifted.Query[Nothing,Nothing,Seq]
[error] required: UserDAOImpl.this.Userlogininfo => slick.lifted.Query[Nothing,T,Seq]
[error] dbUserLoginInfo <- Userlogininfo.filter(_.logininfoid === dbLoginInfo.id)
[error] ^
[error] play/modules/admin/app/models/daos/impl/UserDAOImpl.scala:33: type mismatch;
[error] found : UserDAOImpl.this.Logininfo => slick.lifted.Query[Nothing,Nothing,Seq]
[error] required: UserDAOImpl.this.Logininfo => slick.lifted.Query[Nothing,T,Seq]
[error] dbLoginInfo <- loginInfoQuery(loginInfo)
[error] ^
[error] play/modules/admin/app/models/daos/impl/UserDAOImpl.scala:69: value headOption is not a member of UserDAOImpl.this.driver.DriverAction[Seq[Nothing],UserDAOImpl.this.driver.api.NoStream,slick.dbio.Effect.Read]
[error] db.run(userQuery.result.headOption)
[error] ^
[error] 5 errors found
'मामला u =>' कुछ भी मेल खाता है। यदि आप विकल्प को संशोधित करना चाहते हैं तो यह 'कुछ' है और इसे 'कोई नहीं' छोड़ दें अन्यथा आप 'मानचित्र' का उपयोग कर सकते हैं। मैं वास्तव में अन्य चीजों के साथ मदद करने के बारे में नहीं जानता क्योंकि मुझे स्लिम नहीं पता है, लेकिन हो सकता है कि आप जिन प्रकारों की अपेक्षा करते हैं उन्हें एनोटेट करने का प्रयास करें और कंपाइलर को बताएं कि आप कहां विफल हो जाते हैं। –
आपको जो त्रुटि संदेश मिल रहे हैं, यदि आप उन्हें बारीकी से पढ़ते हैं, तो पहले से ही आपको बता रहे हैं कि आपकी समस्याएं क्या हैं। क्या कोई विशेष त्रुटि संदेश है जिसमें आपको व्याख्या करने में कठिनाई हो रही है ...? –
अगर आप अपनी टेबल और विधियों के स्कीमा दे सकते हैं तो डीबग करना आसान होगा .. – mohit