小编Him*_*ire的帖子

@PrimaryKeyColumn注释必须具有scala Cassandra Spring Data应用程序的PARTITIONED类型

我正在使用Scala处理Cassandra Spring数据模块.我创建了域模型和设置crud存储库.

Spring数据存储库的设置如下:

@Repository
trait SampleRepository extends CassandraRepository[Sample, SampleKey]
Run Code Online (Sandbox Code Playgroud)

表域模型设置如下:

@Table
 case class Sample(@PrimaryKey
              sampleKey: SampleKey,
              @Column("surName")
              surName: String)
Run Code Online (Sandbox Code Playgroud)

主键是复合键.Id列作为分区键.将列命名为Cluster key

@PrimaryKeyClass
case class SampleKey(
                  @PrimaryKeyColumn( `type` = PrimaryKeyType.PARTITIONED, ordinal = 0, name = "id")
                  id: Int,
                  @PrimaryKeyColumn( `type` = PrimaryKeyType.CLUSTERED, ordinal = 1,  name = "name")
                  name: String
                )
Run Code Online (Sandbox Code Playgroud)

在scala中,type是一个有效的关键字,因此使用了后向引号.我期待这个工作,但当我启动应用程序,但我得到

Suppressed: org.springframework.data.mapping.MappingException: Composite primary key type [com.barclays.decisionstore.trac.model.SampleKey] has no fields annotated with @PrimaryKeyColumn
    at org.springframework.data.cassandra.core.mapping.PrimaryKeyClassEntityMetadataVerifier.verify(PrimaryKeyClassEntityMetadataVerifier.java:91)
    ... 262 common frames omitted
Suppressed: org.springframework.data.mapping.MappingException: At least one of the @PrimaryKeyColumn annotations …
Run Code Online (Sandbox Code Playgroud)

scala cassandra spring-data spring-data-cassandra

6
推荐指数
1
解决办法
641
查看次数

String IdentityHashMap vs HashMap性能

Identity HashMap是java中的特殊实现,它比较对象引用而不是equals,并且还使用identityHashCode而不是hashCode.另外它用来linear-probe hash table代替Entry list.

Map<String,String> map = new HashMap<String,String>(); 

Map<String,String> iMap = new IdentityHashMap<String,String>();
Run Code Online (Sandbox Code Playgroud)

这是否意味着对于String键,如果正确调整,IdentifyHashMap通常会更快?

添加了一些基本代码

public class Dictionary {

public static void main(String[] args) throws IOException {

    BufferedReader br = new BufferedReader(new FileReader("/usr/share/dict/words"));

    String line;
    ArrayList<String> list = new ArrayList<String>();


    int index=0;
    while( (line = br.readLine()) != null){
        list.add(line);
    }
    System.out.println("list.size() = " + list.size());
    Map<String,Integer> iMap = new IdentityHashMap<String,Integer>(list.size());
    Map<String,Integer> hashMap = new HashMap<>(list.size());

    long iMapTime=0,hashMapTime=0;

    long time=0;
    for(int i=0; i< list.size(); i++){ …
Run Code Online (Sandbox Code Playgroud)

java collections hashtable hashmap

5
推荐指数
1
解决办法
1961
查看次数

如何将Object与Thread链接,以便wait()和notify()工作

在Java中Object,它Thread是独立的类.Java Object源代码没有提到有关monitor /的任何内容,Thread尽管我们有wait()/ notify()methods.

那么问题是该Object监视器如何知道获取它的线程的细节?这些信息存储在哪里?对象和线程如何链接?

java multithreading

3
推荐指数
1
解决办法
73
查看次数