Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.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/2/spring/14.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
Java 使用@Column获取变量_Java_Spring_Cassandra - Fatal编程技术网

Java 使用@Column获取变量

Java 使用@Column获取变量,java,spring,cassandra,Java,Spring,Cassandra,我正在使用Spring将我的cassandra表映射到pojo @Table(value="student_data") public class StudentTable { @PrimaryKey private String primaryKey; @Column(value="column_name1") private String columnName1; @Column(value="column_name2") private

我正在使用Spring将我的cassandra表映射到pojo

@Table(value="student_data")
public class StudentTable
{
    @PrimaryKey
    private String primaryKey;

    @Column(value="column_name1")
    private String columnName1;

    @Column(value="column_name2")
    private String columnName2;

    @Column(value="column_name3")
    private String columnName3;

    /*
     getters and setters
    */
}
现在,我从数据库中获取数据,并创建一个StudentTable列表来存储数据
cassandraOperations.select(select,StudentTable.class)

我想根据列名获取值。
类似于获取特定StudentTable对象的列\u name1的get值。

您可以尝试使用
org.apache.commons.lang3.reflect.FieldUtils
通过
@column
注释来过滤此类字段的值

例如:

public void testStudent() throws IllegalArgumentException, IllegalAccessException {
    StudentTable student = new StudentTable();
    student.setColumnName1("Student 1 Name");
    String columnValue = null;
    Field[] fields = org.apache.commons.lang3.reflect.FieldUtils.getAllFields(StudentTable.class);
    for(Field f : fields) {
      Column columnAnnotation = f.getAnnotation(Column.class);
      if(columnAnnotation != null && StringUtils.equals(columnAnnotation.name(), "column_name1")) {
        f.setAccessible(true);
        columnValue = (String) f.get(student);
      }
    }
    System.out.println(columnValue);
  }
打印结果:


学生1姓名

基于
CqlTemplate
有一种更简单的方法
CqlTemplate
CassandRateTemplate
用于直接与CQL交互的组件。您可以发出查询并获得
地图

CqlTemplate cqlTemplate = …;

Map<String, Object> map = cqlTemplate.queryForMap(select);
CqlTemplate CqlTemplate=…;
Map Map=cqlTemplate.queryForMap(选择);

地图由CQL列名(通常为小写)键入。

谢谢您的回答。成功了。关于更多的问题,我需要对大量数据进行分析。这是更好的方法还是使用JoSql(Java对象上的sql查询)?我不熟悉JoSql,但它看起来很有趣。但是我不能告诉你其中一个的好处。。