小编vir*_*sha的帖子

Spring Data JPA,如何通过Pageable获取最后一页

我想获取实体的最后5条记录.但无法通过Spring Data JPA获取它.

最初我试图通过LIMIT查询获取数据,但JPA不支持LIMIT.

后来我尝试了Pageable界面.

Pageable pageCount = new PageRequest(0, 10, Direction.ASC,"id");
List<TxnEntity> txnEntities = txnDAO
            .findByAccountEntity(accountEntity,pageCount);
Run Code Online (Sandbox Code Playgroud)

这给了我第一页10个对象.

但我的要求是获得最后10或5个对象.那么如何通过PageableSpring框架中的接口获取它呢?

java spring hibernate jpa

10
推荐指数
2
解决办法
8882
查看次数

将整数列表传递给GET REST API

我想从前端的数据库中获取实体列表.所以我在Spring MVC中编写了POST REST HTTP调用.

但是我读了HTTP文档,它说无论何时你需要从数据库中检索数据都更喜欢GET调用.那么,是否有任何我可以从角度JS替换POST调用GET调用并传递整数列表.但是,GET HTTP有许多缺点,例如:URL的长度是有限的.考虑到我们必须从数据库中获取1000个实体的情况.

请建议我获取实体的可能方法或在Spring MVC中编写GET REST API以获取整数列表(指实体的ID).

例如:考虑书表中有100本书,但我只想要几本书,比如id:5,65,42,10,53,87,34,23.这就是我在POST调用中在整数列表中传递此Id列表的原因.

目前卡住了如何将其转换为GET调用.简而言之,如何通过GET REST调用传递整数列表.

rest web-services spring-mvc http-headers

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

spring-data-mongodb:findAll(),包含输入文档列表和嵌入式DBRef文档的搜索参数

我使用spring-data-mongo并尝试使用params访问dbref对象.我的项目看起来像这样:

我的模型如下:

一世.第一份文件是"汽车"

@Document("cars")
class CarDocument {
   @Id
   private String id;
   private String name;
   private String madeInCountry;
   private String model;
   private String madeInYear;
}
Run Code Online (Sandbox Code Playgroud)

II.第二个文件是"工具"

Document("tools")
class ToolDocument {
   @Id
   private String id;
   private String name;
   private String madeInCountry;
   private String madeInYear;
   private List<UsedIn> usedIn = new ArrayList<>();
}
Run Code Online (Sandbox Code Playgroud)

III.第三个是(ii.)中的嵌入式模型"UsedIn".第三个嵌入式模型表示工具用于在制造厂中制造汽车的位置.

class UsedIn {
   @DBRef
   private CarDocument car;
   private DateTime usedDate;
   private String usedByUsername;
}
Run Code Online (Sandbox Code Playgroud)

我的DAO如下:

public interface CarDAO extends MongoRepository<CarDocument, String>
{
    public CarDocument findByMadeInCountry(String madeInCountry);
}
public interface ToolDAO …
Run Code Online (Sandbox Code Playgroud)

java spring mongodb spring-data-mongodb

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

从typescript和Angular中的Observable <string>获取字符串值

我想从Observable获取字符串值并将函数中的值返回给调用函数.

例如:我有一系列的键,并希望逐个获取所有键的值(字符串),并显示具有菜单栏的html组件.

这是ts文件:

关键list.component.ts

public data = [ { 'key': 1, 'value' : this.getValue(1)}, 
                { 'key': 2, 'value' : this.getValue(2)}, 
                ...
              ];

private getValue(key: number): string {
    return this.keyService.find(key).subscribe(response => {
         return response;
    });
}
Run Code Online (Sandbox Code Playgroud)

keyService.ts

...
public find(key:number): Observable<any> {
  return this.http.get(`/api/keys/${key}`).map(res => res.json() || {});
}
...
Run Code Online (Sandbox Code Playgroud)

我想显示html组件中的所有值.但是在key-list.component.ts中获取可观察到类型字符串的错误.

我如何解决这个订阅方法,并确保getValue应该始终返回字符串,并使其完美无瑕.

其中一个解决方案是:

private getValue(key: number): string {
        let result: string;
        this.keyService.find(key).subscribe(res => result = res);
        return result;
    }
Run Code Online (Sandbox Code Playgroud)

上述解决方案并不总是有效.这类问题的替代解决方案是什么?

reactive-programming rxjs typescript angular

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

带有 Spring Boot 应用程序的 docker secret 在 docker swarm 模式下不起作用 /run/secrets

我正在尝试为 MySQL 容器和 Spring Boot 应用程序设置数据库密码的环境变量,这通常在 docker secrets 中声明。

echo "db_secured_password" | docker secret create secret -
Run Code Online (Sandbox Code Playgroud)

这里是配置文件:

spring boot 应用程序的-> application.yml

db:
  name: my-db
  host: localhost
  port: 3306
  username: root
  password: /run/secrets/db-root-password
spring:
  application:
    name: core-backend
  datasource:
    url: jdbc:mysql://${db.host}:${db.port}/${db.name}
    username: ${db.username}
    password: ${db.password}
Run Code Online (Sandbox Code Playgroud)

用于 docker swarm 模式下的 docker 堆栈 -> docker-compose.yml

version: '3.1'

services: 

  mysql-db:
    container_name: mysql-db
    image: mysql:8.0.12
    deploy:
      restart_policy:
        condition: on-failure
    volumes:
      - ./data/mysql:/var/lib/mysql
      - ./conf/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
    environment:
      - MYSQL_ROOT_PASSWORD=/run/secrets/db-root-password
      - MYSQL_DATABASE=my_db
    ports: 
      - "3306:3306"
    secrets: 
      - db-root-password …
Run Code Online (Sandbox Code Playgroud)

orchestration docker spring-boot docker-swarm devops

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

什么是HashCodeBuilder和EqualsBuilder,用于覆盖hashcode()和equals()方法?

我必须覆盖实体类的equals()方法和hascode()方法.但我的问题是为什么要使用HashcodeBuilder和EqualsBuilder来实现它.

这两者中哪一个更好,为什么?

  @Override
public int hashCode()
{
    return HashCodeBuilder.reflectionHashCode(this, false);
}

@Override
public boolean equals(Object obj)
{
    return EqualsBuilder.reflectionEquals(this, obj);
}
Run Code Online (Sandbox Code Playgroud)

要么

@Override
public int hashCode()
{
    final int prime = 31;
    int result = 1;
    result = prime * result + ((userKey == null) ? 0 : userKey.hashCode());
    result = prime * result + ((id == null) ? 0 : id.hashCode());
    result = prime * result + ((userEntity == null) ? 0 : userEntity.hashCode());
    return result;
}

@Override
public …
Run Code Online (Sandbox Code Playgroud)

java equals hashcode

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

@TransactionalEventListener 不起作用,因为 @EventListener 像相同上下文的魅力一样工作

我正在从事 Spring Boot 应用程序的事件驱动设计。

代码由以下文件组成:

  1. Spring 启动:ApplicationEvent 文件,即 MyBusinessEvent.{java

    @Data
    @AllArgsConstructor
    public class MyBusinessEvent {
    
       private String data;
    
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 事件发布者文件:MyBusinessService.java

    @Slf4j
    @Service
    public class MyBusinessService {
    
        private final ApplicationEventPublisher applicationEventPublisher;
    
        @Autowired
        public MyBusinessService(
                ApplicationEventPublisher applicationEventPublisher) {
    
            this.applicationEventPublisher = applicationEventPublisher;
        }
    
        @Override
        public void save() {
            String data = "Testing event data";
            MyBusinessEvent event = new MyBusinessEvent(data);
            applicationEventPublisher.publishEvent(event);
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 事件监听器:MyBusinessEventListener.java

    @Slf4j
    @Component
    public class MyBusinessEventListener {
    
        @EventListener
        public void handleEvent(MyBusinessEvent myBusinessEvent) {
            log.info("[MyBusinessEventListener] New event received with following data: {}", …
    Run Code Online (Sandbox Code Playgroud)

java event-listener spring-boot

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