如何忽略Spring Data Cassandra中的实体字段?使用javax.persistence.Transient注释?
我的Spring Data Cassandra配置如下所示:
@Configuration
@EnableCassandraRepositories(basePackages = {
"mypackage.repository.cassandra",
})
public class DistributedRepositoryConfiguration {
// ...
@Bean
public CassandraSessionFactoryBean session() throws Exception {
CassandraSessionFactoryBean session = new CassandraSessionFactoryBean();
session.setCluster(cluster().getObject());
session.setKeyspaceName(configuration.get().getKeyspace());
session.setConverter(converter());
session.setSchemaAction(SchemaAction.CREATE);
return session;
}
}
Run Code Online (Sandbox Code Playgroud)
通常,Spring Data Cassandra在我的项目中工作.但是,当我启动我的应用程序时,我没有创建表.谁能告诉我我做错了什么?
我正在尝试使用spring-data-cassandra将cassandra与Spring引导集成.
Application.java
package hello;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.ComponentScan;
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
CassandraConfiguration.java
package conf;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.cassandra.config.CassandraClusterFactoryBean;
import org.springframework.data.cassandra.config.java.AbstractCassandraConfiguration;
import org.springframework.data.cassandra.mapping.BasicCassandraMappingContext;
import org.springframework.data.cassandra.mapping.CassandraMappingContext;
import org.springframework.data.cassandra.repository.config.EnableCassandraRepositories;
@Configuration
@EnableCassandraRepositories("dao")
public class CassandraConfiguration extends AbstractCassandraConfiguration {
@Bean
@Override
public CassandraClusterFactoryBean cluster() {
CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean();
cluster.setContactPoints("localhost");
cluster.setPort(9042);
return cluster;
}
@Override
protected String getKeyspaceName() {
return "mykeyspace";
}
@Bean
@Override
public CassandraMappingContext cassandraMapping() …Run Code Online (Sandbox Code Playgroud) 我有app1.war和app2.war部署在同一个tomcat jvm中.这两个应用程序都有自己的上下文xmls - app1.xml和app2.xml.这两个应用程序都包含连接到Cassandra的数据存储驱动程序依赖项.它们在单独部署时运行良好.但是当两者都部署在同一个jvm中时,我在日志中看到了以下JMX异常:
[DEBUG] [TokenId=] [2015-07-29 20:54:35.177] [DefaultListableBeanFactory] - [Eagerly caching bean 'cluster' to allow for resolving potential circular references]
[DEBUG] [TokenId=] [2015-07-29 20:54:35.191] [DefaultListableBeanFactory] - [Invoking afterPropertiesSet() on bean with name 'cluster']
[DEBUG] [TokenId=] [2015-07-29 20:54:35.199] [SystemProperties] - [com.datastax.driver.NEW_NODE_DELAY_SECONDS is undefined, using default value 1]
[DEBUG] [TokenId=] [2015-07-29 20:54:35.199] [SystemProperties] - [com.datastax.driver.NON_BLOCKING_EXECUTOR_SIZE is undefined, using default value 16]
[DEBUG] [TokenId=] [2015-07-29 20:54:35.205] [SystemProperties] - [com.datastax.driver.NOTIF_LOCK_TIMEOUT_SECONDS is undefined, using default value 60]
[WARN ] [TokenId=] [2015-07-29 20:54:35.217] [FrameCompressor] - …Run Code Online (Sandbox Code Playgroud) tomcat spring-mvc cassandra datastax-java-driver spring-data-cassandra
有什么简单的方法可以通过xml配置打开cassandra上的查询日志?我正在使用命名空间:
xmlns:cassandra="http://www.springframework.org/schema/data/cassandra"
Run Code Online (Sandbox Code Playgroud)
但我找不到任何合适的解决方案。我试图通过cqlsh打开跟踪,但是它对我的应用程序无效。
我也在尝试添加行:
<logger name="com.datastax.driver.core.QueryLogger.NORMAL" level="TRACE" />
Run Code Online (Sandbox Code Playgroud)
但也不起作用。
我的版本:spring-data-cassandra-1.4.0 cassandra:2.1.5
我对此线程有一个类似的问题(尚未解决)。
我有一个Spring Boot 2 App,并有一个bootstrap.yml文件。有一个属性“ spring.data.cassandra.keyspace-name”没有被使用。我在src / main / resources下只有一个bootstrap.yml。
重要说明:如果将bootstrap.yml重命名为application.yml,则一切正常。
这看起来像一个真正的错误。有人可以确认他们也面临这个问题吗?还是我做错了什么?
bootstrap.yml的内容如下:
spring:
profiles: default
# Pretty-print JSON responses
jackson:
serialization:
indent-output: true
data:
cassandra:
contact-points: localhost
keyspace-name: samplekeyspace
Run Code Online (Sandbox Code Playgroud)
我的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.sample.org</groupId>
<artifactId>sample-data</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>cart-data</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.10</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-cassandra-reactive</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId> …Run Code Online (Sandbox Code Playgroud) 如果我在 spring-data-cassandra 项目中根本没有设置任何读/写一致性级别,那么我的读取一致性级别是多少?写字呢?
(我在这里问了这个问题,但 Google 群组现在已锁定)
我使用 Spring 和 Cassandra 作为底层数据库。曾提到过 spring 伞项目 'spring data cassandra'。与休眠不同,无法找出此处如何管理事务。如果你们中的一些人已经合并了交易管理器,请分享交易管理器的详细信息。
我正在使用spring-data-cassandra.有没有一种方法或注释可以在我的实体java POJO中用于uuid或timeuuid类型的主键,以自动生成主键(id)的值?
我知道我可以使用id = UUIDs.timeBased();,但我希望自动化它.
当我尝试在大多数版本的Spring Boot(1.4)中使用Spring Data Cassandra时,我遇到了一个问题.
它似乎是一个maven依赖项问题,它不加载最新版本的Cassandra驱动程序.请问有什么解决方法可以解决这个问题吗?提前致谢![
编辑通过mp911de集成建议的解决方案后
]感谢您的回复,我按照您的建议设置了cassandra-driver,但我仍然有错误,这是完整的堆栈跟踪.
08:46:41.691| ERROR | Application startup failed | org.springxxamework.boot.SpringApplication.handleRunFailure(SpringApplication.java:827)
org.springxxamework.beans.factory.BeanCreationException: Error creating bean with name 'cassandraMapping' defined in class path resource [xx/xxx/xxx/cap/web/config/CasssandraConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springxxamework.beans.BeanInstantiationException: Failed to instantiate [org.springxxamework.data.cassandra.mapping.CassandraMappingContext]: Factory method 'cassandraMapping' threw exception; nested exception is java.lang.NoSuchMethodError: com.datastax.driver.core.DataType.asJavaClass()Ljava/lang/Class;
at org.springxxamework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599)
at org.springxxamework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1123)
at org.springxxamework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1018)
at org.springxxamework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)
at org.springxxamework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springxxamework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springxxamework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springxxamework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springxxamework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springxxamework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
at org.springxxamework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
at org.springxxamework.context.support.AbstractApplicationContext.rexxesh(AbstractApplicationContext.java:538)
at org.springxxamework.boot.context.embedded.EmbeddedWebApplicationContext.rexxesh(EmbeddedWebApplicationContext.java:118)
at org.springxxamework.boot.SpringApplication.rexxesh(SpringApplication.java:766) …Run Code Online (Sandbox Code Playgroud) java cassandra spring-boot spring-data-cassandra maven-dependency