标签: spring-data

Spring数据原生查询不允许Postgres jsonb字符串存在运算符(问号)

我正在尝试在 SpringData 本机查询中使用 Postgres jsonb 字符串存在运算符。

SpringData 方法示例:

@Query(value = "SELECT t.id \n"
        + " FROM task AS t \n"
        + " WHERE (t.worker_ids \\? :workerId)\n"
        + " ORDER BY t.created_at\n",
        nativeQuery = true)
Optional<String> findMatchingTaskId(@Param("workerId") String workerId);
Run Code Online (Sandbox Code Playgroud)

哪里worker_ids是数据库类型JSOB的。我试图排除问号,\\但仍然出现以下错误: org.postgresql.util.PSQLException: No value specified for parameter 2.

有没有办法将此运算符与 spring 数据本机查询一起使用?

postgresql hibernate spring-data

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

Spring Data Redis 和 Jedis 兼容性问题

我正在尝试从 RedisClusterConfiguration(下面给出的伪代码)创建 JedisConnection 工厂,但我面临编译时错误

无法解析 redis.clients.jedis.JedisShardInfo 类型。它是从所需的 .class 文件间接引用的。

代码片段:

RedisClusterConfiguration clusterConfiguration = new RedisClusterConfiguration(clusterList);
return new JedisConnectionFactory(clusterConfiguration);
Run Code Online (Sandbox Code Playgroud)

正在使用的 Spring Data Redis 版本:2.0.6.RELEASE

redis jedis spring-data spring-data-redis redis-cluster

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

使用内存数据库进行 Spring Boot TEST

我的问题是我无法创建在内存数据库中使用的测试。所有的时间都有错误,例如:

引起:java.lang.IllegalStateException:无法检索@EnableAutoConfiguration 基础包

我如何使用 H2 内存数据库进行测试?

实体类:

@Entity
@Table(name = "names")
public class Names{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "name_id")
    private int id;

    @Column(name = "name")
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}
Run Code Online (Sandbox Code Playgroud)

存储库类:

@Repository("namesRepository")
public interface NamesRepository extends JpaRepository<Names, Long> {

    Names findByName(String name);
    List<Names> findAll();
}
Run Code Online (Sandbox Code Playgroud)

数据库配置类:

@Configuration …
Run Code Online (Sandbox Code Playgroud)

spring spring-data spring-data-jpa spring-boot

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

Spring Boot 不会在 Postgres 中创建表

我正在尝试基于实体生成模式表。但是没有创建表。怎么了?

实体示例:

@Entity
@NoArgsConstructor
@Getter @Setter
public class User {
    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    public Long id;

    public String username;
    public String password;

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public User(String username) {
        this(username, username + "pass");
    }
}
Run Code Online (Sandbox Code Playgroud)

application.properties

spring.datasource.url=jdbc:postgresql://localhost:5432/dbtest
spring.datasource.username=vssekorin
spring.datasource.password=
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update
Run Code Online (Sandbox Code Playgroud)

依赖项:

compile('org.springframework.boot:spring-boot-starter-data-jpa')
runtime('com.h2database:h2')
compile('org.telegram:telegrambots:3.6.1')
runtime('org.postgresql:postgresql')
compileOnly('org.projectlombok:lombok')
testCompile('org.springframework.boot:spring-boot-starter-test')
Run Code Online (Sandbox Code Playgroud)

警告: GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement

java postgresql spring-data spring-boot

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

Spring Data 在查询 Cassandra 时使用实体类名而不是 @Table("table_name")

在一个新项目中,我必须Cassandra用作持久层。

我正在使用Spring Data存储库来运行查询。我的实体如下所示

@Table("my_customer")
public class CustomerEntity {
    @PrimaryKey
    private Long id;
    ....
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用repository.count()它获取此表中的行数时会引发以下异常

org.springframework.data.cassandra.CassandraInvalidQueryException: Query; CQL [SELECT count(*) FROM customerentity;]; unconfigured table customerentity; nested exception is com.datastax.driver.core.exceptions.InvalidQueryException: unconfigured table customerentity
    at org.springframework.data.cassandra.core.cql.CassandraExceptionTranslator.translate(CassandraExceptionTranslator.java:139)
    at org.springframework.data.cassandra.core.cql.CassandraAccessor.translate(CassandraAccessor.java:334)
    at org.springframework.data.cassandra.core.cql.CqlTemplate.translateException(CqlTemplate.java:732)
    at org.springframework.data.cassandra.core.cql.CqlTemplate.query(CqlTemplate.java:298)
Run Code Online (Sandbox Code Playgroud)

似乎 spring 没有检测@Table("my_customer")到运行查询中提到的表名。它应该在查询中使用my_customer而不是customerentity作为表名。

难道我做错了什么?它适用JPA于关系数据库的存储库。我也试过在@Entity(name = "my_customer")没有运气的情况下注释实体类。(我知道它只会影响CQL/JPQL

spring cassandra spring-data

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

带有 Spring Data JPA 的 Mongodb 文档中的 PrePersist 和 PreUpdate

我有使用问题@PrePersist,并@PreUpdate在MongoDB中我的实体有有像createAt和updateAt,一切都做工精细元场,如果它定义了一个超类@Entity,但它似乎不工作@Document。那么,什么功能,我可以使用类似的工作,@PrePersist@PreUpdate为蒙戈实体的家伙?这是我的超类

@EntityListeners(AuditingEntityListener.class)
public class ItemDocument implements Serializable {

    private static final long serialVersionUID = 5894122627332059602L;

    @Id
    private UUID id;
    @Field("created_at")
    @CreatedDate
    private long created_at;
    @Field("created_by")
    private String created_by;
    @Field("updated_at")
    @LastModifiedDate
    private long updated_at;
    @Field("updated_by")
    private String updated_by;

    @PrePersist
    protected void onPersist() {
        this.created_at = new Date().getTime();
        this.updated_at = this.created_at;
    }

    /**
     * On update.
     */
    @PreUpdate
    protected void onUpdate() {
        this.updated_at = new Date().getTime();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的实体

@Document(collection …
Run Code Online (Sandbox Code Playgroud)

java spring mongodb spring-data spring-data-mongodb

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

Mongo DB - 如何使用不同的名称作为键而不是属性名称

我正在使用 org.springframework.data.mongodb.core.MongoOperations 来存储 MongoDB 文档。

@Document(collection = "api_response")
public class ApiResponse {

    private String dealNumber; // deal_Number
    private String systemCode; // system_Code

}
ApiResponse response = new ApiResponse();
mongoOperations.save(response); 
Run Code Online (Sandbox Code Playgroud)

它被正确保存。我需要使用不同的键而不是实际的属性名称。而不是 dealNumber,它应该是 deal_Number 作为键。

是否可以?

spring-data spring-data-mongodb

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

排除 Spring Data MongoDB 中的嵌套字段

是否可以在 Spring Data MongoDB 中排除嵌套文档的字段?

如果尝试过

query.fields().exclude("user.password");
Run Code Online (Sandbox Code Playgroud)

但那以洞用户文件结尾被排除。

mongodb spring-data

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

如何从 Spark 与 Cassandra 建立区域/直流感知连接?

我正在使用 spark-sql 2.4.1、spark-cassandra-connector_2.11-2.4.1.jar 和 java8。当我试图从表中获取数据时,我遇到了

java.io.IOException: Failed to write statements to keyspace1.model_vals. The
latest exception was
  An unexpected error occurred server side on cassandra-node1: com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: org.apache.cassandra.exceptions.ReadTimeoutException: Operation timed out - received only 0 responses.
Run Code Online (Sandbox Code Playgroud)

那么如何从火花代码建立到 Cassandra db 的区域/直流感知连接?

YML

现有的

spring:
  data:
      cassandra:
        keyspace-name: raproduct
        contact-points:
                    - cassandra-node1
                    - cassandra-node2
        port: 9042 
Run Code Online (Sandbox Code Playgroud)

变成

spring:
  data:
      cassandra:
        connection:
          local_dc: southeast-1
        keyspace-name: raproduct
        contact-points:
                    - cassandra-node1
                    - cassandra-node2
        port: 9042 
Run Code Online (Sandbox Code Playgroud)

但它没有反映/应用更改后的“local_dc”。如何在 spring-data 中做到这一点?

cassandra spring-data datastax-java-driver apache-spark spring-data-cassandra

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

SPRING DATA-JPA + eclipseLink2.0失败了

在我的测试项目中,由于跟随错误,Spring容器无法创建扩展JpaRepository的bean.

引起:org.springframework.beans.factory.BeanCreationException:创建名为'srSvcInfoMtrRepository'的bean时出错:FactoryBean在创建对象时抛出异常; 嵌套异常是 java.lang.NoSuchMethodError: javax.persistence.EntityManager.getMetamodel()Ljavax/persistence/metamodel/Metamodel;

这可能是与JPA版本相关的问题.

我在persistence.xml中的eclipelink2.0(org.eclipse.persistence.jpa.PersistenceProvider)中指定了某些persistenceProvider.

你对这个问题有什么看法吗?

堆栈跟踪

2012-05-14 09:11:08错误捕获异常,同时允许TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@112da40]准备测试实例 *> [net.tjjang.learn.spring_jpa.test.SrSvcInfoMtrTest @ b6d6ab] java.lang.IllegalStateException:无法在org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:157)中加载ApplicationContext 在org.springframework.test.work.conring框架上的org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109)org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75) org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:211)中的.TestContextManager.prepareTestInstance(TestContextManager.java:321)org.springframework.test.context.junit4.SpringJUnit4ClassRunner $ 1.runReflectiveCall(SpringJUnit4ClassRunner. java:288)在org.springframework org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:290)的org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) org.junit.runners.BlockJUnit4ClassRunner中的.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231).runChild(BlockJUnit4ClassRunner.java:49)org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:193)org.junit.runners.ParentRunner $ 1.schedule(ParentRunner.java:52)org.junit. runners.ParentRunner.runChildren(ParentRunner.java:191)org.junit.runners.ParentRunner.access $ 000(ParentRunner.java:42)org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:184)at org org.junit.runners上的org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)中的.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) .garentRunner.run(ParentRunner.java:236)位于org.eclipse.joutt.internal.junit4.runner.JUnit4TestReference.run的org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)中(JUnit4TestReference) .java:50)在org.eclipse.jdt.internal的org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)位于org.eclipse.jdt.internal.junit.runner的org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)的.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) .RemoteTestRunner.run(RemoteTestRunner.java:390)at or.e.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 引起:org.springframework.beans.factory.BeanCreationException:创建名为'srSvcInfoMtrRepository'的bean时出错:FactoryBean在创建对象时抛出异常; 嵌套异常是java.lang.NoSuchMethodError:javax.persistence.EntityManager.getMetamodel()Ljavax/persistence/metamodel/Metamodel; org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:149)位于org.springframework.beans.factory的org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:102) .support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1441)org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:305)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory) .java:193)org.springframework上的org.springframework.bens.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913). org.springframewor上的context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)k.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:103)位于org.springframework.test.context.support的org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:1).在org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:148)的org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:124)中委托SmartContextLoader.loadContext(DelegatingSmartContextLoader.java:228).还有24个 >引起:java.lang.NoSuchMethodError:javax.persistence.EntityManager.getMetamodel()Ljavax/persistence/metamodel/Metamodel;* at org.springframework.data.jpa.repository.support.JpaEntityInformationSupport.getMetadata(JpaEntityInformationSupport.java:56 )org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getEntityInformation(JpaRepositoryFactory.java:145)org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:83)at org. springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:66)位于org.springframework.data的org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:146). repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:120)at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport).java:39)at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142)

JpaRepository类()

package net.tjjang.learn.spring_jpa.repositories;
import net.tjjang.learn.spring_jpa.domain.SrSvcInfoMtr;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.transaction.annotation.Transactional;

@Transactional(readOnly = true)
public interface SrSvcInfoMtrRepository extends JpaRepository<SrSvcInfoMtr, String> {
    Page<SrSvcInfoMtr> findBySvc_nm(String …
Run Code Online (Sandbox Code Playgroud)

spring jpa eclipselink spring-data spring-data-jpa

0
推荐指数
1
解决办法
2151
查看次数