【问题标题】:How to insert Java Date and Timestamp value to mysql databas in spring如何在春季将Java日期和时间戳值插入mysql数据库
【发布时间】:2020-06-03 18:29:18
【问题描述】:

我正在尝试创建一个注册页面以添加航班详细信息,同时尝试在 mysql 数据库中插入日期和时间,但我收到错误拒绝值 [22-02-2020];和拒绝值 [12:00]; ,谁能指导我如何解决这个问题。

我的飞行模型课

@Entity
@Table(name="FLIGHT")
public class Flight {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int ID;
    private String flightnumber;
    @Column(name="operatingairlines")
    private String operatingAirlines;
    @Column(name="departurecity")
    private String departureCity;
    @Column(name="arrivalcity")
    private String arivalCity;
    @Column(name="departuredate")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date dateOfDeparture;
    @Column(name="departuretime")
    private Timestamp estimatedTravelTime;

    public int getID() {
        return ID;
    }

    public void setID(int iD) {
        ID = iD;
    }

    public String getFlightnumber() {
        return flightnumber;
    }

    public void setFlightnumber(String flightnumber) {
        this.flightnumber = flightnumber;
    }

    public String getOperatingAirlines() {
        return operatingAirlines;
    }

    public void setOperatingAirlines(String operatingAirlines) {
        this.operatingAirlines = operatingAirlines;
    }

    public String getDepartureCity() {
        return departureCity;
    }

    public void setDepartureCity(String departureCity) {
        this.departureCity = departureCity;
    }

    public String getArivalCity() {
        return arivalCity;
    }

    public void setArivalCity(String arivalCity) {
        this.arivalCity = arivalCity;
    }

    public Date getDateOfDeparture() {
        return dateOfDeparture;
    }

    public void setDateOfDeparture(Date dateOfDeparture) {
        this.dateOfDeparture = dateOfDeparture;
    }

    public Timestamp getEstimatedTravelTime() {
        return estimatedTravelTime;
    }

    public void setEstimatedTravelTime(Timestamp estimatedTravelTime) {
        this.estimatedTravelTime = estimatedTravelTime;
    }

    @Override
    public String toString() {
        return "Flight [ID=" + ID + ", flightnumber=" + flightnumber + ", operatingAirlines=" + operatingAirlines
                + ", departureCity=" + departureCity + ", arivalCity=" + arivalCity + ", dateOfDeparture="
                + dateOfDeparture + ", estimatedTravelTime=" + estimatedTravelTime + "]";
    }

}

登录控制器

包 com.tcdc.FlightReservation.controller;

@Controller
public class LoginController {

    @Autowired
    UserRepository userRepository;


    @GetMapping("/showform")
    public String showRegistration() {
        return "register";
    }

    @PostMapping("/registerUser")
    public String SaveRegister(@ModelAttribute("user") User user) {
        //user.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));
        System.out.println(user);
        userRepository.save(user);
        return "login";
    }

    @GetMapping("/showlogin")
    public String showLogin() {
        //userRepository.
        return "login";
    }

    @PostMapping("/LoginProcess")
    public String LoginProcess(@RequestParam("email") String email, @RequestParam("password") String password) {

        User user = userRepository.findByEmail(email);
        System.out.println(user);
        if((user.getPassword().equals(password))&&(user.getRole().contentEquals("0"))) {
            return "findFlights";
        }
        else if((user.getPassword().equals(password))&&(user.getRole().contentEquals("1"))) {
            return "AddFlight";
        }
        else {
        return "login";
        }

    }

}

飞行控制器

@Controller
public class FlightController {

    @Autowired
    FlightServices flightServices;

    @Autowired
    FlightRepository flightRepository;

    @PostMapping("/flightResult")
    public String findFlights(@RequestParam("from") String from,@RequestParam("to") String to,@RequestParam("departureDate") @DateTimeFormat(pattern="dd-MM-yyyy") Date departureDate, Model model) {

        //flightRepository.findFlight(from,to,departureDate);
        System.out.println(from+" "+to+" "+departureDate);
        List<Flight> flist = flightServices.searchFlight(from,to,departureDate);
        model.addAttribute("flightdetails", flist);
        System.out.println(flist);
        return "FlightResults";
    }


    @PostMapping("/SaveFlight")
    public String SaveFlight(@ModelAttribute("flight") Flight flight) {

        flight.getDateOfDeparture();

                    //flightRepository.save(flight);


        return "FlightResults";
    }


}

错误

2020-02-19 20:02:35.580  WARN 3048 --- [nio-8080-exec-7] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 errors
Field error in object 'flight' on field 'dateOfDeparture': rejected value [22-02-2020]; codes [typeMismatch.flight.dateOfDeparture,typeMismatch.dateOfDeparture,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [flight.dateOfDeparture,dateOfDeparture]; arguments []; default message [dateOfDeparture]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'dateOfDeparture'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@javax.persistence.Column @org.springframework.format.annotation.DateTimeFormat java.util.Date] for value '22-02-2020'; nested exception is java.lang.IllegalArgumentException: Parse attempt failed for value [22-02-2020]]
Field error in object 'flight' on field 'estimatedTravelTime': rejected value [12:00]; codes [typeMismatch.flight.estimatedTravelTime,typeMismatch.estimatedTravelTime,typeMismatch.java.sql.Timestamp,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [flight.estimatedTravelTime,estimatedTravelTime]; arguments []; default message [estimatedTravelTime]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.sql.Timestamp' for property 'estimatedTravelTime'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@javax.persistence.Column java.sql.Timestamp] for value '12:00'; nested exception is java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]]]

Mysql 表详情

ID                    int(11)   NO  PRI 
flightnumber        varchar(50) NO      
operatingairlines   varchar(50) NO      
departurecity       varchar(50) NO      
arrivalcity         varchar(50) NO      
departuredate        date       NO      
departuretime        timestamp  NO      CURRENT_TIMESTAMP

【问题讨论】:

    标签: java hibernate spring-boot spring-mvc


    【解决方案1】:

    你可以做这样的事情。只需使用带有以下注释的Date

    @Column(name="departuretime")
    @Temporal(TemporalType.TIMESTAMP)
    private Date estimatedTravelTime;
    

    【讨论】:

    • 出现错误:org.springframework.beans.factory.BeanCreationException:在类路径资源 [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class 中定义名称为“entityManagerFactory”的 bean 创建错误]: init 方法调用失败;嵌套异常是 org.hibernate.AnnotationException:@Temporal 只能在 java.util.Date 或 java.util.Calendar 属性上设置:com.tcdc.FlightReservation.Models.Flight.estimatedTravelTime
    • @VyTcdc 你必须使用 java.util.Date
    • 将时间戳更改为 java.util.Date 但又出现上述类型不匹配错误。
    猜你喜欢
    • 2021-03-10
    • 2013-04-27
    • 2018-05-18
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    相关资源
    最近更新 更多