-1

我有三个表,分别称为SLSNotification、SLSWorkflow 和 Importer这些表没有任何关系...我想为 jasper 报告获取三个表..所以我为它创建了一个本机查询..它在 MySQL 上运行良好...但是当我将它添加到 SLSWorkflowRepository 时,只检索工作流类。我也想从这个存储库中获取其他类……我认为它检索只是因为我这样写

  @Query(value = "select * from slsnotification a join sls_wrkflw b on a.snumber = b.snumber join importers c on c.importer_vat_number =  a.importervat where a.importervat = :importerVatNumber and a.snumber = :snumber", nativeQuery = true)
    Object getForPrint(@Param("snumber") Long snumber,@Param("importerVatNumber") String importerVatNumber);

我可以为SLSIWorkflow getForPrint()方法获取其他类...

如果我错了,请给一些其他方式...

这是我的模型

SLSNotification 模型 @Entity @Table(name = "slsnotification") public class SLSNotification {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(length = 16)
    private Long snumber;

    @Column(length = 100)
    private String serialCord;

    private String date;
//    @JsonFormat(pattern = "yyyy-MM-dd")
//    private Date appPostdate = new Date();
    @Column(nullable = false)
    private String appPostdate;

    @Column(length = 8)
    private String cusOffice;

    @Column(length = 1)
    private String cusSerial;

    @Column(length = 50)
    private String cusDecNo;

    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date cusDate;

    @Column(length = 300)
    private String manufacturer;

    @Column(length = 300)
    private String exporterAddress;

    @Column(length = 20, nullable = false)
    private String importerVAT;

    @NotEmpty
    @Column(length = 20, nullable = false)
    private String declarantVAT;

    private String declarantDetails;

    private String vessel;

    private String blNo;

    private String loadingPort;

    private String tradingCountry;

    private String countryOrigin;

    private String invoiceNo;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date invoiceDate;

    private Double invoiceValue;


    public Long getSnumber() {
        return snumber;
    }

    public void setSnumber(Long snumber) {
        this.snumber = snumber;
    }

    public String getSerialCord() {
        return serialCord;
    }

    public void setSerialCord(String serialCord) {
        this.serialCord = serialCord;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public String getCusOffice() {
        return cusOffice;
    }

    public void setCusOffice(String cusOffice) {
        this.cusOffice = cusOffice;
    }

    public String getCusSerial() {
        return cusSerial;
    }

    public void setCusSerial(String cusSerial) {
        this.cusSerial = cusSerial;
    }

    public String getCusDecNo() {
        return cusDecNo;
    }

    public void setCusDecNo(String cusDecNo) {
        this.cusDecNo = cusDecNo;
    }

    public Date getCusDate() {
        return cusDate;
    }

    public void setCusDate(Date cusDate) {
        this.cusDate = cusDate;
    }

    public String getManufacturer() {
        return manufacturer;
    }

    public void setManufacturer(String manufacturer) {
        this.manufacturer = manufacturer;
    }

    public String getExporterAddress() {
        return exporterAddress;
    }

    public void setExporterAddress(String exporterAddress) {
        this.exporterAddress = exporterAddress;
    }

    public String getImporterVAT() {
        return importerVAT;
    }

    public void setImporterVAT(String importerVAT) {
        this.importerVAT = importerVAT;
    }

    public String getDeclarantVAT() {
        return declarantVAT;
    }

    public void setDeclarantVAT(String declarantVAT) {
        this.declarantVAT = declarantVAT;
    }

    public String getVessel() {
        return vessel;
    }

    public void setVessel(String vessel) {
        this.vessel = vessel;
    }

    public String getBlNo() {
        return blNo;
    }

    public void setBlNo(String blNo) {
        this.blNo = blNo;
    }

    public String getLoadingPort() {
        return loadingPort;
    }

    public void setLoadingPort(String loadingPort) {
        this.loadingPort = loadingPort;
    }

    public String getTradingCountry() {
        return tradingCountry;
    }

    public void setTradingCountry(String tradingCountry) {
        this.tradingCountry = tradingCountry;
    }

    public String getCountryOrigin() {
        return countryOrigin;
    }

    public void setCountryOrigin(String countryOrigin) {
        this.countryOrigin = countryOrigin;
    }

    public String getInvoiceNo() {
        return invoiceNo;
    }

    public void setInvoiceNo(String invoiceNo) {
        this.invoiceNo = invoiceNo;
    }

    public Date getInvoiceDate() {
        return invoiceDate;
    }

    public void setInvoiceDate(Date invoiceDate) {
        this.invoiceDate = invoiceDate;
    }

    public Double getInvoiceValue() {
        return invoiceValue;
    }

    public void setInvoiceValue(Double invoiceValue) {
        this.invoiceValue = invoiceValue;
    }

SLS工作流模型

@Entity
@Table(name = "sls_wrkflw")
public class SLSIWorkflow {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long SNumber;

    private String qc;
    private String inv;
    private String manuTr;
    private String packList;
    private String blAttached;
    private String otherDoc;
    private String otherDocName;
    private String ad;
    private String MAUsername;
    private String appMan;
    private String accptdQc;
    private String accptTR;
    private String manufacturer;
    private String validMark;
    private String otherDocBoolean;
    private String cnfrmtyTest;
    private String dtSampling;
    private String otherDocDet;
    private String adUsername;
    private String recom;
    private String reaRec;
    private String tests;
    private String wfStatus;

    public Long getSNumber() {
        return SNumber;
    }

    public void setSNumber(Long SNumber) {
        this.SNumber = SNumber;
    }

    public String getQc() {
        return qc;
    }

    public void setQc(String qc) {
        this.qc = qc;
    }

    public String getInv() {
        return inv;
    }

    public void setInv(String inv) {
        this.inv = inv;
    }

    public String getManuTr() {
        return manuTr;
    }

    public void setManuTr(String manuTr) {
        this.manuTr = manuTr;
    }

    public String getPackList() {
        return packList;
    }

    public void setPackList(String packList) {
        this.packList = packList;
    }

    public String getBlAttached() {
        return blAttached;
    }

    public void setBlAttached(String blAttached) {
        this.blAttached = blAttached;
    }

    public String getMaattachUser() {
        return maattachUser;
    }

    public void setMaattachUser(String maattachUser) {
        this.maattachUser = maattachUser;
    }

    public String getMauser() {
        return mauser;
    }

    public void setMauser(String mauser) {
        this.mauser = mauser;
    }

    public String getMareattachUser() {
        return mareattachUser;
    }

    public void setMareattachUser(String mareattachUser) {
        this.mareattachUser = mareattachUser;
    }

    public String getOtherDoc() {
        return otherDoc;
    }

    public void setOtherDoc(String otherDoc) {
        this.otherDoc = otherDoc;
    }

    public String getOtherDocName() {
        return otherDocName;
    }

    public void setOtherDocName(String otherDocName) {
        this.otherDocName = otherDocName;
    }
}

进口商模型

@Entity
@Table(name = "importers")
public class Importer {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "importer_id")
    private long importerId;

    private String importerBrc;

    @NotEmpty
    @Column(unique = true, nullable = false)
    private String importerVatNumber;
     @Column(nullable = false)
    private String category;
    private String importerSVatNumber;
    @NotEmpty
    private String importerName;
    private String importerAddress1;

    @NotEmpty
    private String officePhoneNumber;
    @NotEmpty
    private String mobilePhoneNumber;

    @Email
    @NotEmpty
    private String email;

    @Email
    private String optemail1;

    @Email
    private String optemail2;

    @NotEmpty
    private String userIDandTime;

    @NotEmpty
    private String recentUpdateBy;

    public String getOptemail1() {
        return optemail1;
    }

    public void setOptemail1(String optemail1) {
        this.optemail1 = optemail1;
    }

    public String getOptemail2() {
        return optemail2;
    }

    public void setOptemail2(String optemail2) {
        this.optemail2 = optemail2;
    }

    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinTable(name = "importer_agents",
            joinColumns = {
                @JoinColumn(name = "importerId")},
            inverseJoinColumns = {
                @JoinColumn(name = "agentId")})
    private List<Agent> agentList;

    public String getImporterBrc() {
        return importerBrc;
    }

    public void setImporterBrc(String importerBrc) {
        this.importerBrc = importerBrc;
    }

    public String getImporterVatNumber() {
        return importerVatNumber;
    }

    public void setImporterVatNumber(String importerVatNumber) {
        this.importerVatNumber = importerVatNumber;
    }

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    public String getImporterSVatNumber() {
        return importerSVatNumber;
    }

    public void setImporterSVatNumber(String importerSVatNumber) {
        this.importerSVatNumber = importerSVatNumber;
    }



    public String getImporterName() {
        return importerName;
    }

    public void setImporterName(String importerName) {
        this.importerName = importerName;
    }

    public String getImporterAddress1() {
        return importerAddress1;
    }

    public void setImporterAddress1(String importerAddress1) {
        this.importerAddress1 = importerAddress1;
    }
}

SLSIWorkflowRepository

public interface SLSIWorkflowRepository extends CrudRepository<SLSIWorkflow,Long> {

    @Override
    SLSIWorkflow save(SLSIWorkflow slsiWorkflow);

    @Override
    SLSIWorkflow findOne(Long Long);

    @Override
    boolean exists(Long Long);

    @Override
    Iterable<SLSIWorkflow> findAll();

    @Override
    long count();

    @Override
    void delete(SLSIWorkflow entity);



 @Query(value = "select * from slsnotification a join sls_wrkflw b on a.snumber = b.snumber join importers c on c.importer_vat_number =  a.importervat where a.importervat = :importerVatNumber and a.snumber = :snumber", nativeQuery = true)
Object getForPrint(@Param("snumber") Long snumber,@Param("importerVatNumber") String importerVatNumber);

工作流服务

public class WorkflowServices {

    private static final Logger serviceLogger = LogManager.getLogger(WorkflowServices.class);

    private static final String INIT_WORKFLOW_STATUS = "INIT";

    @Autowired
    private SLSIWorkflowRepository workflowRepository;

    @Autowired
    private FileSystemStorageService storageService;

    @Autowired
    private SLSNotificationRepository slsNotificationRepository;

    public void initWorkflow(Long slsNumber) {
        SLSIWorkflow workflow = new SLSIWorkflow();
        workflow.setSNumber(slsNumber);
        workflow.setWfStatus(INIT_WORKFLOW_STATUS);
        workflowRepository.save(workflow);
    }


    public SLSIWorkflow getApplicationForPrint(Long SNumber, String importerVatNumber) {
        return workflowRepository.getForPrint(SNumber, importerVatNumber);
    }
}

工作流控制器//这很大,我只给我的绳子

@RequestMapping(path = "/viewTAXInvoice/{snumber}/{importerVatNumber}", method = RequestMethod.POST)
    public ModelAndView getPDFReport(@PathVariable("snumber") String snumber, @PathVariable("importerVatNumber") String importerVatNumber) {
        File reportsDir = Paths.get(servletContext.getRealPath(reportDataLocation)).toFile();
        if (!reportsDir.exists()) {
            throw ProductWithSameSerialExistsException.getInstance();
        }

        JRDataSource dataSource = new JRBeanCollectionDataSource(Arrays.asList(workflowServices.getApplicationForPrint(Long.parseLong(snumber), importerVatNumber)));
        Map<String, Object> parameterMap = new HashMap<>();
        parameterMap.put("datasource", dataSource);
        parameterMap.put("JasperCustomSubReportDatasource", dataSource);
        parameterMap.put(JRParameter.REPORT_FILE_RESOLVER, new SimpleFileResolver(reportsDir));
        System.out.println("Dt Source1 "+dataSource);
        return new ModelAndView("pdfReportforVAT", parameterMap);
    }

如何连接三个表...请帮助我的人...

4

1 回答 1

0

您只得到一个SLSIWorkflow,因为您仅在以下代码中返回该实体WorkflowServices

public SLSIWorkflow getApplicationForPrint(Long SNumber, String importerVatNumber) {
    return workflowRepository.getForPrint(SNumber, importerVatNumber);
}

如果您返回 an Object,它将具有表中的所有字段slsnotification, sls_wrkflw,importers作为Object[].

加上使用 PlainJOIN它将导致INNER JOIN默认情况下。如果一个连接表不满足ON条件,这将不会返回任何内容。如果您使用LEFT JOIN这样会返回空值,这是很好的。

于 2018-01-24T05:58:42.853 回答