小编mp9*_*1de的帖子

Spring Data JPA:按示例查询?

使用Spring Data JPA可以通过示例进行查询,其中特定实体实例用作搜索条件吗?

例如(没有双关语),如果我有一个Person看起来像这样的实体:

@Entity
public class Person {
  private String firstName;
  private String lastName;
  private boolean employed;
  private LocalDate dob;
  ...
}
Run Code Online (Sandbox Code Playgroud)

我可以找到所有在1977年1月1日出生的史密斯姓氏的雇员,举个例子:

Person example = new Person();
example.setEmployed(true);
example.setLastName("Smith");
example.setDob(LocalDate.of(1977, Month.JANUARY, 1));
List<Person> foundPersons = personRepository.findByExample(example);
Run Code Online (Sandbox Code Playgroud)

java spring spring-data spring-data-jpa

36
推荐指数
3
解决办法
5万
查看次数

Spring数据mongodb - 'cursor'选项是必需的

我正在尝试使用Spring Data MongoDB 3.6-rc4执行聚合操作.

Aggregation agg = newAggregation(
    lookup("orders", "orderId", "_id", "order") 
);
List<BasicDBObject> results = mongoOperations.aggregate(agg, "transactions", BasicDBObject.class).getMappedResults();
Run Code Online (Sandbox Code Playgroud)

但是在运行查询时遇到以下错误

2017-11-24 17:03:41,539 WARN  org.springframework.data.mongodb.core.MongoTemplate : Command execution of { "aggregate" : "transactions" , "pipeline" : [ { "$lookup" : { "from" : "orders" , "localField" : "orderId" , "foreignField" : "_id" , "as" : "order"}}]} failed: The 'cursor' option is required, except for aggregate with the explain argument
2017-11-24 17:03:41,574 ERROR org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with …
Run Code Online (Sandbox Code Playgroud)

java spring mongodb spring-data-mongodb

20
推荐指数
2
解决办法
3万
查看次数

Spring R2DBC DatabaseClient.as(…)

在我的 spring-boot 2.3 应用程序中,我使用了一个简单的数据方法DatabaseClient

fun getCurrentTime(): Mono<LocalDateTime> =
    databaseClient
        .execute("SELECT NOW()")
        .asType<LocalDateTime>()
        .fetch()
        .first()
}
Run Code Online (Sandbox Code Playgroud)

使用 spring-boot 2.4(和 spring 5.3 和 spring-data-r2dbc 1.2),org.springframework.data.r2dbc.core.DatabaseClient不推荐使用 spring-data-r2dbc,取而代之的org.springframework.r2dbc.core.DatabaseClient是 spring-r2dbc - 它具有不同的 API。

调整它非常简单 - 除了 kotlin 扩展asType,它不是新的 DatabaseClientExtensions 的一部分。

fun getCurrentTime(): Mono<LocalDateTime> =
    databaseClient
        .sql("SELECT NOW()")
        .map { row: Row ->
            row.get(0, LocalDateTime::class.java)!!
        }
        .one()
Run Code Online (Sandbox Code Playgroud)

这些扩展是其他地方还是我如何使用具体化类型参数进行转换?

java spring kotlin spring-boot spring-data-r2dbc

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

为什么Spring不为关系数据库提供被动(非阻塞)客户端?

我使用Vert.x工具包来创建反应式应用程序,支持MySQL和Postgres等关系数据库.我知道Spring为像Cassandra和Mongo这样的NoSQL DB提供了反应支持,但是他们是否愿意为关系数据库提供相同的支持?

java spring-data reactive spring-webflux r2dbc

11
推荐指数
2
解决办法
3438
查看次数

如何在反应性Spring数据中应用分页?

在Spring Data中,我们PagingAndSortingRepository继承了它CrudRepository.在反应式Spring数据中,我们只有 ReactiveSortingRepository继承自ReactiveCrudRepository.我们怎么能以反应的方式进行分页呢?例如,我们将来能够做到这一点ReactivePagingAndSortingRepository吗?

reactive-programming spring-data spring-data-mongodb

9
推荐指数
2
解决办法
7325
查看次数

NoSuchMethodError:org.springframework.data.repository.config.RepositoryConfigurationSource.getAttribute

我试图在spring-boot应用程序中使用spring-data-redis来处理redis.我创建JedisConnectionFactory如下:

RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration();
configuration.setHostName("localhost");
configuration.setPort(6379);
JedisConnectionFactory connectionFactory = new JedisConnectionFactory(configuration);
Run Code Online (Sandbox Code Playgroud)

它抛出了异常:

Exception in thread "main" java.lang.NoSuchMethodError: org.springframework.data.repository.config.RepositoryConfigurationSource.getAttribute(Ljava/lang/String;)Ljava/util/Optional;
    at org.springframework.data.redis.repository.configuration.RedisRepositoryConfigurationExtension.registerBeansForRoot(RedisRepositoryConfigurationExtension.java:88)
    at org.springframework.data.repository.config.RepositoryConfigurationDelegate.registerRepositoriesIn(RepositoryConfigurationDelegate.java:118)
    at org.springframework.boot.autoconfigure.data.AbstractRepositoryConfigurationSourceSupport.registerBeanDefinitions(AbstractRepositoryConfigurationSourceSupport.java:59)
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars(ConfigurationClassBeanDefinitionReader.java:352)
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:143)
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:116)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:336)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:246)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:270)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:93)
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:686)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:524)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175)
    at com.test.redis.RedisTesterApplication.main(RedisTesterApplication.java:11)
Run Code Online (Sandbox Code Playgroud)

我的build.gradle:

dependencies {
    compile('org.springframework.data:spring-data-redis:2.0.2.RELEASE')
    compile('redis.clients:jedis:2.9.0')
    compile('org.json:json:20160810')
    compile('org.springframework.boot:spring-boot-starter:1.4.2.RELEASE')
    compile("org.springframework:spring-web")
    compile('org.slf4j:slf4j-api:+')
}
Run Code Online (Sandbox Code Playgroud)

是因为spring-boot和spring-data-redis的不兼容的依赖版本?我怎么知道要使用哪个版本?

java jedis spring-data-redis spring-boot

9
推荐指数
2
解决办法
2万
查看次数

如何在 r2dbc 中加入表?

在java反应器中,r2dbc。我有两个表 A、B。我也为它们定义了存储库。如何获取由 A 连接 B 组成的数据?

我只提出了以下方法:从 A 调用 databaseClient.select,因此在循环中从 B 调用 select。

但我想要更有效和反应性的方式。怎么做?

project-reactor spring-data-r2dbc r2dbc

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

Spring Data RedisTemplate,ttl在设置值时不起作用

我想为存储在Redis中的密钥设置一个ttl,我已按以下方式完成:

@Component
public class RedisBetgeniusMarketService implements BetgeniusMarketService {

    private static final int DEFAULT_EVENTS_LIFE_TIME = 240;

    @Value("${redis.events.lifetime}")
    private long eventsLifeTime = DEFAULT_EVENTS_LIFE_TIME;

    @Autowired
    private RedisTemplate<String, Market> marketTemplate;

    @Override
    public Market findOne(Integer fixtureId, Long marketId) {
        String key = buildKey(fixtureId, marketId);
        return marketTemplate.boundValueOps(key).get();
    }

    @Override
    public void save(Integer fixtureId, Market market) {
        String key = buildKey(fixtureId, market.getId());
        BoundValueOperations<String, Market> boundValueOperations = marketTemplate.boundValueOps(key);
        boundValueOperations.expire(eventsLifeTime, TimeUnit.MINUTES);
        boundValueOperations.set(market);
    }

    private String buildKey(Integer fixtureId, Long marketId) {
        return "market:" + fixtureId + ":" + marketId;
    } …
Run Code Online (Sandbox Code Playgroud)

redis spring-data-redis

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

如何在cassandra db中进行子选择

我正在尝试恢复我的对象的最后一个状态,但是这个子选择不起作用,我已经看到新版本的cassandra db支持聚合操作和子查询.

select * from event_store 
   where event_version = (select max(event_version) from event_store) 
    ALLOW FILTERING;
Run Code Online (Sandbox Code Playgroud)

语法异常:第1:49行输入'select'没有可行的选择(...来自event_version = [(] select ...)的event_store

cassandra

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

如何在Spring Data MongoDB中保存和查询动态字段?

我在Spring boot 1.4.x分支和Spring Data MongoDB上.

我想扩展Pojo,HashMap使其有可能动态保存新属性.

我知道我可以Map<String, Object>在Entry类中创建一个属性来保存其动态值,但我不想拥有内部结构.我的目标是让root的入门类中的所有字段都像这样序列化它:

{
   "id":"12334234234",
   "dynamicField1": "dynamicValue1",
   "dynamicField2": "dynamicValue2"
}
Run Code Online (Sandbox Code Playgroud)

所以我创建了这个Entry类:

@Document
public class Entry extends HashMap<String, Object> {

    @Id
    private String id;

    public String getId() {
        return id;
    }

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

和这样的存储库:

public interface EntryRepository extends MongoRepository<Entry, String> {
}
Run Code Online (Sandbox Code Playgroud)

当我启动我的应用程序时,我有这个错误:

Error creating bean with name 'entryRepository': Invocation of init method failed; nested exception is org.springframework.data.mapping.model.MappingException: Could not lookup mapping metadata for …
Run Code Online (Sandbox Code Playgroud)

java spring mongodb spring-data

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