Play无法找到数据库

时间:2017-12-11 01:04:34

标签: scala jdbc playframework

所以,3天后我现在遇到了Play的各种问题,我是框架的新手,但我不知道发生了什么。因此,在我无法使用Slick后,由于某些期货永远不会返回值,我决定切换到Anorm。它工作,直到我决定添加第二个存储库...之后,我现在无法加载我的页面,因为我一直这样:

@769g71c3d - Internal server error, for (GET) [/] ->

play.api.UnexpectedException: Unexpected exception[ProvisionException: Unable to provision, see the following errors:

1) Error injecting constructor, java.lang.IllegalArgumentException: Could not find database for pmf
  at dao.ActivityTypeRepository.<init>(ActivityTypeDAO.scala:13)
  at dao.ActivityTypeRepository.class(ActivityTypeDAO.scala:13)
  while locating dao.ActivityTypeRepository
    for the 1st parameter of services.ActivityTypeServiceImpl.<init>(ActivityTypeService.scala:17)
  while locating services.ActivityTypeServiceImpl
  while locating services.ActivityTypeService

数据库输入正确,我可以通过终端和datagrip连接到它...有没有人遇到过类似的问题?

根据要求,这是我的配置:

slick.dbs.default.profile = "slick.jdbc.PostgresProfile$"
slick.dbs.default.db.driver = "org.postgresql.Driver"
slick.dbs.default.db.url = "jdbc:postgresql://localhost:5432/pmf"

这些是我的课程:

@Singleton

class ActivityTypeRepository @Inject()(dbapi: DBApi)(implicit ec: ExecutionContext) {

    private val db = dbapi.database(RepositorySettings.dbName)

    private[dao] val activityTypeMapping = {

        get[Int]("activityType.id") ~
        get[String]("activityType.name") map {
            case id ~ name => ActivityType(id, name)
        }
    }

    def listAll: Future[Seq[ActivityType]] = Future {

        db.withConnection { implicit conn =>

            SQL("SELECT * FROM ActivityType").as(activityTypeMapping *)
        }
    }
}

@Singleton
class UserRepository @Inject()(dbApi: DBApi)(implicit ec: ExecutionContext){

    private val db = dbApi.database(RepositorySettings.dbName)

    private[dao] val userMapping = {

        get[Option[Long]]("users.id") ~
          get[String]("users.email") ~
          get[Option[String]]("users.name") ~
          get[Option[String]]("users.surname") map {
            case id ~ email ~ name ~ surname => User(id, email, name, surname)
        }
    }

    def add(user: User): Future[Option[Long]] = Future {

        db.withConnection { implicit conn =>

            SQL"INSERT INTO users(id, email, name, surname) VALUES (${user.id}, ${user.email}, ${user.name}, ${user.surname})".executeInsert()
        }
    }

    def find(id: Long): Future[Option[User]] = Future {

        db.withConnection { implicit conn =>

            SQL"SELECT * FROM User WHERE id = $id".as(userMapping *).headOption
        }
    }

    def findByEmail(email: String): Future[Option[User]] = Future {

        db.withConnection { implicit conn =>

            SQL"SELECT * FROM User WHERE email = $email".as(userMapping *).headOption
        }
    }

    def listAll: Future[Seq[User]] = Future {

        db.withConnection { implicit conn =>

            SQL("SELECT * FROM User").as(userMapping *)
        }
    }
}

修改

已添加到application.conf

db {
   default.driver = org.postgresql.Driver
   default.url = "jdbc:postgresql://localhost:5432/pmf_visualizations"
}

但没有变化。

0 个答案:

没有答案