我有一个简单的员工表,它有manager_id,可以通过它自己引用它。我正在努力让一名员工和他的经理一起
这是我的Parsers
object User{
val simple = {
get[Option[Int]]("users.user_id")~
str("users.email")~
get[Option[String]]("users.first_name")~
get[Option[String]]("users.last_name")~
get[Option[String]]("users.nick_name")~
bool("users.is_manager")~
bool("users.is_hr_manager")~
bool("users.is_admin")~
get[Option[Int]]("users.manager_id") map {
case user_id~email~first_name~last_name~nick_name~is_manager~is_hr_manager~is_admin~manager_id => {
User(user_id,email,first_name,last_name,nick_name,is_manager,is_hr_manager,is_admin,manager_id)
}
}
}
def getAliasedParser(alias:String):RowParser[User] = {
getAliased[Option[Int]](alias+"_user_id")~
getAliased[String](alias+"_email")~
getAliased[Option[String]](alias+"_first_name")~
getAliased[Option[String]](alias+"_last_name")~
getAliased[Option[String]](alias+"_nick_name")~
getAliased[Boolean](alias+"_is_manager")~
getAliased[Boolean](alias+"_is_hr_manager")~
getAliased[Boolean](alias+"_is_admin")~
getAliased[Option[Int]](alias+"_manager_id") map {
case user_id~email~first_name~last_name~nick_name~is_manager~is_hr_manager~is_admin~manager_id => {
User(user_id,email,first_name,last_name,nick_name,is_manager,is_hr_manager,is_admin,manager_id)
}
}
}
val withManager = User.simple ~ (User.getAliasedParser("mgr") ?) map {
case user~manager => (user,manager)
}
UnexpectedNullableFound(的ColumnName(users.email,有些(mgr_email)))]
这是我的问题:
def findByEmailWithManager(email: String): Option[(User,Option[User])] = {
DB.withConnection { implicit connection =>
SQL("""
SELECT
`users`.`user_id`,
`users`.`email`,
`users`.`first_name`,
`users`.`last_name`,
`users`.`nick_name`,
`users`.`is_manager`,
`users`.`is_hr_manager`,
`users`.`is_admin`,
`users`.`manager_id` ,
b.`user_id` mgr_user_id,
b.`email` mgr_email,
b.`first_name` mgr_first_name,
b.`last_name` mgr_last_name,
b.`nick_name` mgr_nick_name,
b.`is_manager` mgr_is_manager,
b.`is_hr_manager` mgr_is_hr_manager,
b.`is_admin` mgr_is_admin,
b.`manager_id` mgr_manager_id
FROM `users` left outer join `users` b on (users.manager_id = b.user_id)
where `users`.email = {email}
""").on('email -> email).as(User.withManager.singleOpt)
}
}
我尝试执行查询时出现此错误
UnexpectedNullableFound(ColumnName(users.email,Some(mgr_email)))]
这是我的案例类
case class User(id:Option[Int]=None,email:String,firstName:Option[String]=None,lastName:Option[String]=None,nickName:Option[String]=None,isManager:Boolean=false,isHrManager:Boolean=false,isAdministrator:Boolean=false,managerId:Option[Int]=None)
有人可以帮我理解为什么我会收到这个错误吗?提前致谢
答案 0 :(得分:1)