title: how to upload file and save file in db use spring boot and jpa?
body: <p>I am new in spring boot.I wanna upload a small file use spring boot and save it in db use jpa.
  But I don't have good resolution.
  My program like these:<br/>
  database table:<br/></p>
  
  <pre><code>CREATE TABLE `report` (
    `id` int(10) NOT NULL AUTO_INCREMENT,
    `name` varchar(255) NOT NULL,
    `logo` BLOB NOT NULL,
    `created_time` int(10) NOT NULL,
    `updated_time` int(10) NOT NULL
  ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8
  </code></pre>
  
  <p>jpa bean:<br/>
  Report.java</p>
  
  <pre><code>import javax.persistence.Column;
  import javax.persistence.Entity;
  import javax.persistence.Lob;
  import javax.persistence.Table;
  import java.io.Serializable;
  
  @Entity
  @Table(name="mf_report")
  public class Report implements Serializable{
      @Column(name="id")
      private int id;
  
      @Column(name="name")
      private String name;
  
      @Lob
      @Column(name="logo", length=100000)
      private byte[] logo;
  
      public int getId() {
          return id;
      }
  
      public void setId(int id) {
          this.id = id;
      }
  
      public String getName() {
          return name;
      }
  
      public void setName(String name) {
          this.name = name;
      }
  
      public byte[] getLogo() {
          return logo;
      }
  
      public void setLogo(byte[] logo) {
          this.logo = logo;
      }
  }
  </code></pre>
  
  <p>ReportReposity.java:</p>
  
  <pre><code>@Repository
  public interface ReportRepository extends CrudRepository&lt;Report,Long&gt;{
  }
  </code></pre>
  
  <p>ReportService.java:</p>
  
  <pre><code>@Service
  public class ReportService extends CrudService&lt;Report, ReportRepository&gt; {
  
      private final static Logger logger = LoggerFactory.getLogger(ReportService.class);
  
      @Override
      @Autowired
      public void setRepo(ReportRepository repo) {
          this.repo = repo;
      }
  
      @Override
      public Report copy(Report from, Report to) {
          to = from;
          return to;
      }
  
      @Autowired
      private ReportRepository reportRepository;
  
      public boolean saveReportByRequestBean(ReportAddQueryRequest reportBeanQueryRequest){
      try {
          Report report = new Report();
          report.setName(reportBeanQueryRequest.getName());
          report.setLogo(reportBeanQueryRequest.getLogo());
          long now = System.currentTimeMillis()/1000;
          report.setCreateTime(now);
          report.setUpdateTime(now);
          this.save(report);
      }catch (Exception e){
          logger.error("save report error:", e);
          return false;
      }
      return true;
  }
  }
  </code></pre>
  
  <p>ReportParamBean.java:</p>
  
  <pre><code>import org.hibernate.validator.constraints.NotEmpty;
  import java.io.Serializable;
  
  public class ReportParamBean extends AbsRequest implements Serializable {
      private long reportId;
      @NotEmpty(message = "Param 'name' can't be NULL")
      private String name;
      private String logo;// In fact, I don't know what type should logo be, File or ?
  }
  </code></pre>
  
  <p>AbsRequest.java:</p>
  
  <pre><code>public class AbsRequest implements Serializable {
      private static final long serialVersionUID = -8928786145900600868L;
      @NotEmpty(message = "Param 'token' can't be NULL")
      @NotNull
      private String token;
      @NotEmpty(message = "Param 'sign' can't be NULL")
      private String sign;
      @Min(value = 1, message = "Param 'time' is invalid")
      private Long time;
      @Min(value = -1, message = "Param 'nodeId' is invalid")
      @NotNull(message = "Param 'nodeId' can't be NULL")
      private Long nodeId;
      private String nodeName;
      @Override
      public String toString() {
          return new ToStringBuilder(this)
                  .append("token", token)
                  .append("sign", sign)
                  .append("time", time)
                  .append("nodeId", nodeId)
                  .append("nodeName", nodeName)
                  .toString();
      }
  
      public String getToken() {
          return token;
      }
  
      public void setToken(String token) {
          this.token = token;
      }
  
      public String getSign() {
          return sign;
      }
  
      public void setSign(String sign) {
          this.sign = sign;
      }
  
      public Long getTime() {
          return time;
      }
  
      public void setTime(Long time) {
          this.time = time;
      }
  
      public Long getNodeId() {
          return nodeId;
      }
  
      public void setNodeId(Long nodeId) {
          this.nodeId = nodeId;
      }
  
      public String getNodeName() {
          return nodeName;
      }
  
      public void setNodeName(String nodeName) {
          this.nodeName = nodeName;
      }
  }
  </code></pre>
  
  <p>ReportController.java:</p>
  
  <pre><code>@RestController
  @RequestMapping("/api")
  public class ReportController {
  
      @Autowired
      private ReportService reportService;
  
      @RequestMapping(value = "/report", method = RequestMethod.POST, produces = MediaTypes.JSON_UTF_8)
      public JSONObject createReport(@RequestBody ReportAddQueryRequest reportBeanQueryRequest){
          boolean result = reportService.saveReportByRequestBean(reportBeanQueryRequest);
          if (!result){
              return ResponseWrapper.buildResponse(RTCodeEnum.C_SERVICE_NOT_AVAILABLE, "add report failed");
          }
          return ResponseWrapper.buildResponse(RTCodeEnum.C_OK, "add report success");
      }
  }
  </code></pre>
  
  <p>I don't know whether I can post a file and other params to server in just one post request,then save the data in db.Could you give me resolution.
  Special thanks.</p>