如何在 ScalaQuery 中获取类对象作为结果而不是元组?

发布于 2024-11-09 15:55:06 字数 695 浏览 0 评论 0原文

我已经开始使用 Scala 和 ScalaQuery 开始我的第一个项目。到目前为止,两者看起来都不错并且很有前途,尽管我偶尔会遇到一些困难。

有人可以解释一下如何获取类对象(在本例中为具有大约 12 列的域案例类)而不是元组。 下面的查询返回元组,但问题是我需要表的大约 9 列(或所有列),而无需在查询产量中提供每个列名称。 Domain 类已经 * 定义了所有列,那么为什么下面的查询会返回元组而不是 Domain 对象,以便我可以使用 Domain.name、Domain.level 而不是计算返回的元组中的位置。

val ext_id = 'ns1.amazon.com'
val name = "www.getcrazy.com"
val validDomains = for {p <- Domain where { p => (p.ext_id is ext_id) && (p.domain_name is name) && (p.is_deleted is false) && (p.result_code is "1000")}} yield *

for(pp <- validDomains) {
            logger.debug("State is " + pp._6 + " for domain ID - " + pp._1)
}

有什么建议吗?

谢谢, 帕万

I have started my first project in Scala and ScalaQuery. So far both are looking good and promising though I am having little difficulty once in a while.

Can someone please explain me how to get a class object (in this case Domain case class having around 12 columns) instead of tuples.
Below query is returning tuples but the problem is I need around 9 columns(or all columns) of the table without providing each column name in the query yield. Domain class already has * defining all columns then why would the query below is returning tuples instead of Domain object so that I can use Domain.name, Domain.level instead of figuring the position in tuple returned.

val ext_id = 'ns1.amazon.com'
val name = "www.getcrazy.com"
val validDomains = for {p <- Domain where { p => (p.ext_id is ext_id) && (p.domain_name is name) && (p.is_deleted is false) && (p.result_code is "1000")}} yield *

for(pp <- validDomains) {
            logger.debug("State is " + pp._6 + " for domain ID - " + pp._1)
}

Any suggestion?

Thanks,
Pawan

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

怀里藏娇 2024-11-16 15:55:06

创建一个扩展的对象 org.scalaquery.ql.basic .BasicTable。例如,

case class Community (id:String, name:String, latitude:Double, longitude:Double)
object CommunityTable extends Table[Community]("Communities") {
  def id = column[String]("ID", O PrimaryKey, O NotNull, O DBType "uniqueidentifier")
  def name = column[String]("Name", O NotNull, O DBType "varchar(255)")
  def longitude = column[Double]("Longitude")
  def latitude = column[Double]("Latitude")
  def * = id ~ name ~ longitude ~ latitude <> (Community, Community.unapply _)
}

有了这个,您可以简单地查询 CommunityTable 并获取 List[Community] 返回:

val c: List[Community] = CommunityTable.where(c => (c.name startsWith term)).list

Create an object that extends org.scalaquery.ql.basic.BasicTable. For example,

case class Community (id:String, name:String, latitude:Double, longitude:Double)
object CommunityTable extends Table[Community]("Communities") {
  def id = column[String]("ID", O PrimaryKey, O NotNull, O DBType "uniqueidentifier")
  def name = column[String]("Name", O NotNull, O DBType "varchar(255)")
  def longitude = column[Double]("Longitude")
  def latitude = column[Double]("Latitude")
  def * = id ~ name ~ longitude ~ latitude <> (Community, Community.unapply _)
}

With this, you can simply query the CommunityTable and get a List[Community] back:

val c: List[Community] = CommunityTable.where(c => (c.name startsWith term)).list
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文