我在Eclipse中有一个包含Tomcat服务器的Web项目.Tomcat服务器安装在Path C:\ Program Data ...中,Eclipse的Workspace位于D:\ Webproject中.
现在,如果我要修改我的Java servlet类,我必须复制从d类和JSP文件:\ Webproject到C:\程序数据\ Tomcat的\ webapps中.......这花了我很多时间.
有没有自动部署数据的解决方案,即编辑的类和JSP被移动到C:..下的tomcat文件夹?
我使用的是Hibernate Envers 4.3.10.Final。我有以下两个JPA类:
public class Factory {
private int factoryID;
....
}
public class Trgs{
private int trgsID;
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="fk_factory")
private Factory factory;
}
Run Code Online (Sandbox Code Playgroud)
我编写了一种方法,可重新调整所有审核的Trgs对象。
方法是:
public List<Trgs> readAuditedTrgs (List<Integer> trgsIds) {
AuditReader reader = AuditReaderFactory.get(entityManager);
AuditQuery query = reader.createQuery().forRevisionsOfEntity(Trgs.class, true, true);
query.add(AuditEntity.id().in(ids));
query.add(AuditEntity.revisionType().eq(RevisionType.ADD));
query.addOrder(AuditEntity.revisionNumber().desc());
return query.getResultList() ;
}
Run Code Online (Sandbox Code Playgroud)
执行完上述方法后,我的结果是审核的运输清单。当然,每个Trgs对象都具有正确和相关的Audited Factory对象。
但是问题是,我了解到Hibernate Envers始终加载关系LAZY。
因此,在我的情况下,我必须遍历Trgs列表并初始化每个Factory对象。
for (Trgs trgs : resultList) {
Hibernate.initialize(trgs.getFactory());
}
Run Code Online (Sandbox Code Playgroud)
因此,如果我有300个Trgs对象,则必须初始化300个Factory对象。这花费了太多。我必须等一分钟。
我了解到不可能过度加载Factory对象。但我需要其他解决方案。我在Dashboad网站(Web项目)中显示此数据。用户不能等待一分钟,直到加载数据。
请帮助我解决这个问题。谢谢。
如何管理处理相同数据库架构的多个项目。每个项目中的 Flyway 迁移脚本如果被其他项目修改,则不允许启动。
例如:
我有一个带有 FlywayInitializer 类的 Spring Boot Project X。
@PostConstruct
public void migrateFlyway() {
final Flyway flyway = new Flyway();
flyway.setSchemas("schema1");
flyway.setLocations("classpath:x.migration");
flyway.migrate();
}
Run Code Online (Sandbox Code Playgroud)
我有一个子模块 Project Y 和他自己的 FlywayInitializer 类
@PostConstruct
public void migrateFlyway() {
final Flyway flyway = new Flyway();
flyway.setSchemas("schema1");
flyway.setLocations("classpath:y.migration");
flyway.migrate();
}
Run Code Online (Sandbox Code Playgroud)
项目结构:
Project X
src
|
main
|
java
FlywayInitializerX.java
|
resources
V1.0_create_tableX.sql
V1.1_update_tableX.sql
Project Y
src
|
main
|
java
FlywayInitializerY.java
|
resources
V1.0_create_tableY.sql
V1.1_update_tableY.sql
Run Code Online (Sandbox Code Playgroud)
我如何为项目 X 和 Y 使用与 Flyway 相同的架构名称“schema1”?
编辑: …
我想对Java流使用一条语句。
我要筛选所有要求为“ true”的Servicework对象,然后检查所有Servicework对象的状态是否为“完成”。
但是,如果serviceworkList ist为空,则变量“ validate”为false。我知道allMatch的规范,即如果list为空,则返回true。
关于如何重建流的任何建议,如果list ist为空,我将得到false?
public class Service{
List<ServiceWork> serviceWorkList = new ArrayList<>();
boolean validate = serviceWorkList
.stream()
.filter(ServiceWork::isRequirement)
.allMatch(a -> a.getStatus() == Status.DONE);
}
Run Code Online (Sandbox Code Playgroud)
class ServiceWork {
private Status status;
private boolean isRequirement;
public Status getStatus() {
return status;
}
public void setStatus(Status status) {
this.status = status;
}
public boolean isRequirement() {
return isRequirement;
}
public void setRequirement(boolean requirement) {
isRequirement = requirement;
}
}
Run Code Online (Sandbox Code Playgroud)
enum Status {
DONE, NOT_DONE
}
Run Code Online (Sandbox Code Playgroud) java ×3
deployment ×1
eclipse ×1
flyway ×1
hibernate ×1
java-stream ×1
jpa ×1
servlets ×1
spring-boot ×1
sql ×1
tomcat ×1