我有一个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)
抱怨我需要创建一个独特的索引.我尝试在谷歌中找到创建索引,唯一索引等,但我仍然收到"创建唯一索引"的消息.
我需要通过内部对象字段创建@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 做这样的事情?
我正在开发 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)