小编Vol*_*ada的帖子

使用并发刷新物化视图

我有一个PostgreSQL数据库,我使用物化视图.当我尝试刷新这些物化视图时会出现问题.

REFRESH MATERIALIZED VIEW product_cat_mview;
REFRESH MATERIALIZED VIEW productsforproject;
Run Code Online (Sandbox Code Playgroud)

我的解决方案是,当用户想要查看更新的数据时,他应该单击网页上的"刷新按钮",但这需要大约50秒(在本地连接上,距离应用程序服务器大约2分钟)并且所有这一次用户必须等待,这是不好的.

现在我应该创建一个解决方案,每10分钟自动刷新这些物化视图.我用多线程创建了一个Java解决方案.但我有一个问题.

第一个查询

REFRESH MATERIALIZED VIEW CONCURRENTLY product_cat_mview;
Run Code Online (Sandbox Code Playgroud)

工作正确,但第二

REFRESH MATERIALIZED VIEW CONCURRENTLY productsforproject;
Run Code Online (Sandbox Code Playgroud)

抱怨我需要创建一个独特的索引.我尝试在谷歌中找到创建索引,唯一索引等,但我仍然收到"创建唯一索引"的消息.

postgresql materialized-views

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

Lombok EqualsAndHashCode 通过内部对象字段

我需要通过内部对象字段创建@EqualsAndHashCode 。我有两个实体 WorkPlace 和 Account。

短代码:

***WorkPlace.java***
public class WorkPlace {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne(optional = false)
    @NotNull
    private Account account;
    .......................
}
***Account.java***
public class Account {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    ...............
}
Run Code Online (Sandbox Code Playgroud)

我想使用 lombok 在 WorkPlace.class 中创建 EqualsAndHashCode,如下所示:

@EqualsAndHashCode(of = {"id", "account.id"})
Run Code Online (Sandbox Code Playgroud)

构建项目时 - “ account.id ”被忽略并通过id字段创建 EqualsAndHashCode 。

是否可以使用 lombok 做这样的事情?

java lombok

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

JUnit 测试。使用ModelMapper库将实体转换为DTO时的问题

我正在开发 Spring Boot Web 应用程序,并且有一个 ModelMapper 库的自定义实现,它允许我转换单个对象和对象列表。

@Component
public class ObjectMapperUtils {

@Autowired
private static ModelMapper modelMapper;

static {
    modelMapper = new ModelMapper();
    modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
}

private ObjectMapperUtils() {
}

public <D, T> D map(final T entity, Class<D> outClass) {
    return modelMapper.map(entity, outClass);
}

public <D, T> List<D> mapAll(final Collection<T> entityList, Class<D> outCLass) {
    return entityList.stream().map(entity -> map(entity, outCLass)).collect(Collectors.toList());
}
}
Run Code Online (Sandbox Code Playgroud)

在服务层,我有一个方法从 DB UserEntity 对象返回并将其转换为 UserDTO。

@Autowired
private UserRepository userRepository;

@Autowired
private ObjectMapperUtils modelMapper;

@Override
public UserDTO getByUserId(String userId) {
    UserEntity …
Run Code Online (Sandbox Code Playgroud)

java junit mockito

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

标签 统计

java ×2

junit ×1

lombok ×1

materialized-views ×1

mockito ×1

postgresql ×1