Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scala类使用mapper的注释_Scala_Cassandra_Datastax_Datastax Java Driver_Mapper - Fatal编程技术网

scala类使用mapper的注释

scala类使用mapper的注释,scala,cassandra,datastax,datastax-java-driver,mapper,Scala,Cassandra,Datastax,Datastax Java Driver,Mapper,我正在使用DataStax驱动程序从Scala应用程序连接到Cassandra数据库。驱动程序附带com.datastax.driver.mapping,用于将数据库表映射到相应的实体类 我打算这样使用映射器: def SelectOperationUsingMapper()={ try{ val session = cluster.connect() val manager = new MappingManager(session); val mapper = manager.ma

我正在使用DataStax驱动程序从Scala应用程序连接到Cassandra数据库。驱动程序附带com.datastax.driver.mapping,用于将数据库表映射到相应的实体类

我打算这样使用映射器:

def SelectOperationUsingMapper()={
try{
  val session = cluster.connect()
  val manager = new MappingManager(session);
  val mapper = manager.mapper(classOf[User])
  val result= mapper.get("@ned")
  print(result.Name)
}
finally{
  cluster.close()
}
abstract class BusinessEntity

@Table(keyspace="MySpace", name="User")
case class User(userId:String, emailId:String, name:String, description:String, password:String, country:String, joinedDate:Date) extends BusinessEntity{
  @PartitionKey
  @Column(name = "UserId")
  val UserId= userId
  @Column(name = "EmailId")
  val EmailId= emailId
  @Column(name = "Name")
  val Name= name
  @Column(name = "Description")
  val Description= description
  @Column(name = "Password")
  val Password= password
  @Column(name = "Country")
  val Country= country
  @Column(name = "JoinedDate")
  val JoinedDate= joinedDate
}
}

实体
用户
使用
@Table
注释映射到数据库,如下所示:

def SelectOperationUsingMapper()={
try{
  val session = cluster.connect()
  val manager = new MappingManager(session);
  val mapper = manager.mapper(classOf[User])
  val result= mapper.get("@ned")
  print(result.Name)
}
finally{
  cluster.close()
}
abstract class BusinessEntity

@Table(keyspace="MySpace", name="User")
case class User(userId:String, emailId:String, name:String, description:String, password:String, country:String, joinedDate:Date) extends BusinessEntity{
  @PartitionKey
  @Column(name = "UserId")
  val UserId= userId
  @Column(name = "EmailId")
  val EmailId= emailId
  @Column(name = "Name")
  val Name= name
  @Column(name = "Description")
  val Description= description
  @Column(name = "Password")
  val Password= password
  @Column(name = "Country")
  val Country= country
  @Column(name = "JoinedDate")
  val JoinedDate= joinedDate
}
我收到一条错误消息,说找不到字段UserId的getter或setter方法

我找到了一个类似注释示例的java代码示例,它运行良好:

 @Table(keyspace = "accounts", name = "users")
public class User {  
    private int id;
    @Column( name = "account_id" )
    private int accountId;
    private String name;
    @Column( name = "creation_date" )
    private Date creationDate;
我的疑问是,在scala代码中没有办法使用
@Table
注释吗?如果是,我哪里出错了

PS:我尝试在没有body和 在参数顶部提供注释。即使这样,也给了我们一个机会 相同的错误消息


我不是Scala专家,但我认为case类的字段不能编辑,除非它们被声明为
var
(我觉得这就像是在捍卫case类的目的)。尽管如此,即使在Java示例中,我相信它们在用户类中也可能有setter。至少我以前是这样写Cassandra映射实体的。试试Phantom或Quill而不是Java驱动程序。或者要获得Java风格的get/set方法我不是Scala专家,但我认为case类的字段不能编辑,除非它们被声明为
var
(我觉得这就像是在捍卫case类的目的)。尽管如此,即使在Java示例中,您不需要设置器吗,我相信他们可能在用户类中为他们设置了setter。至少我以前是这样写Cassandra映射实体的。试试Phantom或Quill而不是Java驱动程序。或者获取Java风格的get/set方法