小编jav*_*ava的帖子

如何自动将Java文件部署到Tomcat服务器?

我在Eclipse中有一个包含Tomcat服务器的Web项目.Tomcat服务器安装在Path C:\ Program Data ...中,Eclipse的Workspace位于D:\ Webproject中.

现在,如果我要修改我的Java servlet类,我必须复制从d类和JSP文件:\ Webproject到C:\程序数据\ Tomcat的\ webapps中.......这花了我很多时间.

有没有自动部署数据的解决方案,即编辑的类和JSP被移动到C:..下的tomcat文件夹?

java eclipse deployment tomcat servlets

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

使用休眠Envers加载ManyToOne关系-渴望/懒惰?

我使用的是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项目)中显示此数据。用户不能等待一分钟,直到加载数据。

请帮助我解决这个问题。谢谢。

java hibernate jpa database-performance hibernate-envers

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

我如何将 Flyway 迁移用于单个架构和多个项目

如何管理处理相同数据库架构的多个项目。每个项目中的 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”?


编辑: …

sql flyway spring-boot

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

如果使用Stream.allMatch(),如何为空列表返回false?

我想对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 java-stream

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