小编Isa*_*tes的帖子

如何在Scala 2.8注释中指定静态数组?

我使用Hibernate Annotations 3.4.0在Scala 2.8.0中构建了一些带注释的域类.它一直工作正常,只是有一些注释将数组作为参数.例如,这是我想在Scala中表达的Java注释:

@OneToMany(mappedBy="passport_id", cascade=CascadeType.PERSIST)
Run Code Online (Sandbox Code Playgroud)

但是,注释需要数组/集作为输入:

[ERROR] .../Passport.scala:50: error: type mismatch; 
[INFO]  found   : javax.persistence.CascadeType(value PERSIST)
[INFO]  required: Array[javax.persistence.CascadeType]
[INFO]     @OneToMany(mappedBy="passport_id", cascade=CascadeType.PERSIST)
Run Code Online (Sandbox Code Playgroud)

我尝试了各种括号,方形/角度/花括号等,以此类推:

@OneToMany(mappedBy="passport_id", cascade=(CascadeType.PERSIST))
@OneToMany(mappedBy="passport_id", cascade=[CascadeType.PERSIST])
@OneToMany(mappedBy="passport_id", cascade=<CascadeType.PERSIST>)
@OneToMany(mappedBy="passport_id", cascade={CascadeType.PERSIST})
Run Code Online (Sandbox Code Playgroud)

...但不幸的是,我已经完成了对Scala/Java注释的理解.感谢帮助.

java annotations scala scala-2.8

11
推荐指数
2
解决办法
3807
查看次数

如何在没有文字元素名称的Scala中创建XML根节点?

我想创建一个这样的文档:

<root/>
Run Code Online (Sandbox Code Playgroud)

我可以以编程方式添加子项.从理论上讲,它看起来像这样:

val root_node_name = "root"
val doc = <{root_node_name}/>
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用:

error: not found: value <
Run Code Online (Sandbox Code Playgroud)

所以,我试过的是这样的:

val root_node_name = "root"
val doc = new scala.xml.Elem(null, root_node_name, null, scala.xml.TopScope, null)  
Run Code Online (Sandbox Code Playgroud)

编译,但在运行时我得到这个空指针异常:

java.lang.NullPointerException
at scala.xml.Utility$.toXML(Utility.scala:201)
at scala.xml.Utility$$anonfun$sequenceToXML$2.apply(Utility.scala:235)
at scala.xml.Utility$$anonfun$sequenceToXML$2.apply(Utility.scala:235)
at scala.Iterator$class.foreach(Iterator.scala:414)
at scala.runtime.BoxedArray$AnyIterator.foreach(BoxedArray.scala:45)
at scala.Iterable$class.foreach(Iterable...
Run Code Online (Sandbox Code Playgroud)

我正在使用Scala 2.8.有关如何解决此问题的任何示例?谢谢.

xml scala scala-2.8

7
推荐指数
2
解决办法
3999
查看次数

scala的通用对象加载函数

我开始使用后端使用Hibernate(JPA)的Scala应用程序.为了加载一个对象,我使用这行代码:

val addr = s.load(classOf[Address], addr_id).asInstanceOf[Address];
Run Code Online (Sandbox Code Playgroud)

不用说,这有点痛苦.我写了一个helper类,看起来像这样:

import org.hibernate.Session

class DataLoader(s: Session) {
  def loadAddress(id: Long): Address = {
    return s.load(classOf[Address], id).asInstanceOf[Address];
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

所以,现在我可以这样做:

val dl = new DataLoader(s)
val addr = dl loadAddress(addr_id)
Run Code Online (Sandbox Code Playgroud)

这是一个问题:如何编写一个通用的参数化方法,可以使用相同的模式加载任何对象?即

val addr = dl load[Address](addr_id)
Run Code Online (Sandbox Code Playgroud)

(或类似的规定.)

我是Scala的新手所以请原谅任何特别可怕的东西.

generics scala manifest parameterization scala-2.8

4
推荐指数
1
解决办法
1066
查看次数