scala类使用mapper的注释
我正在使用DataStax驱动程序从Scala应用程序连接到Cassandra数据库。驱动程序附带com.datastax.driver.mapping,用于将数据库表映射到相应的实体类 我打算这样使用映射器: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
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方法