【发布时间】:2010-06-10 18:39:50
【问题描述】:
假设我有以下课程:
class Person {
@BeanProperty
var firstName: String = _
}
是否可以通过反射或其他方式以类型安全的方式获取“firstName”的字符串表示形式?还是生成的“getFirstName”-Function 的字符串表示形式?
如果它看起来像这样就好了:
val p = new Person
p.getFunction(p.getFirstName).toString // "getFirstName"
p.getAttribute(p.firstName).toString // "firstName"
编辑
好的,需要更多解释;)
假设我想构建一个这样的 SQL 查询:
val jpql = "select p from Person p where p.age > 20";
所以我想让它尽可能的类型安全并写这样的东西:
val jpql = "select p from " + classOf[Person].getName + " where p." +
Person.getAttName(p.age) + " > 20";
这样,如果将来可以重构Scala代码,我可以在不破坏我的代码的情况下更改Person的属性名称。
【问题讨论】:
-
你找到不用 Squeryl 的方法了吗?
-
@GermainGum 不。这不能回答最初的问题,但是如果我现在仍然必须使用 Scala,我只会使用较新的 Scala SQL 库之一,例如 slick slick.typesafe.com 来处理这个问题。