当前位置: 首页 > 知识库问答 >
问题:

值“0000-00-00”不能表示为java。sql。日期

弓华茂
2023-03-14

我正在做一个需要从数据库中提取数据的项目,我使用SpringMVC从数据库中构建模型来选择数据。

以下是我的JSP页面的问题:

<form action="result" method="get" >
<table>
<thead>
<tr>
<th>Date to select:</th>
<th>Name to select:</th>
<th>Type to select:</th>
</tr>
</thead>

<tbody>
<tr>
<td><form:select  path="listOfDates">
<form:option value="NONE"> --SELECT--</form:option>
<form:options items="${listOfDates}"></form:options>
</form:select>
</td>  
<td><form:select  path="listOfInstitutionsNames">
<form:option value="NONE"> --SELECT--</form:option>
<form:options items="${listOfInstitutionsNames}"></form:options>
</form:select>
</td>
<td>
<form:select  path="listOfInstitutionsTypes">
<form:option value="NONE"> --SELECT--</form:option>
<form:options items="${listOfInstitutionsTypes}"></form:options>
</form:select>
</td>
</tr>
</tbody>

<tfoot>
<tr>
<td><input type="submit" value="Извлечь"/></td>
</tr>
</tfoot>

</table>
</form>

如您所见,我尝试使用

@Controller
public class HomeController{ 

    @Autowired
    private ControllerSupportClass controllerSupportClass; 


        @RequestMapping(value="/search", method=RequestMethod.GET)
        public String search(Model model) {
            List<Date> listOfDates = controllerSupportClass.findAllDatesForm();
            List<String> listOfInstitutionsNames = controllerSupportClass.findAllInstitutionsForm();
            List<String> listOfInstitutionsTypes = controllerSupportClass.findAllTypesForm();
            model.addAttribute("listOfInstitutionsTypes", listOfInstitutionsTypes);
            model.addAttribute("listOfInstitutionsNames", listOfInstitutionsNames);
            model.addAttribute("listOfDates", listOfDates);
            return "search";    
        }


        @RequestMapping(value ="/result", method=RequestMethod.GET)
        public String SecondActionPage(@RequestParam String particularDate, 
                                       @RequestParam String nameOfInstitution, 
                                       @RequestParam String typeName,
                                       Model model) throws Exception {


                if(particularDate !="" && nameOfInstitution.trim() !="" && typeName.trim()=="") {                   
                    controllerSupportClass.findWithDateAndName(nameOfInstitution, particularDate, model);                   
                } else if(particularDate.trim() !="" && nameOfInstitution.trim() =="" && typeName.trim() !="") {                    
                    controllerSupportClass.findWithAddedDateAndType(typeName, particularDate, model);                   
                } else if(particularDate.trim() !="" && nameOfInstitution.trim() =="" && typeName.trim() ==""){         
                    controllerSupportClass.findWithAddedDate(particularDate, model);    
                } else if(particularDate.trim() !="" && nameOfInstitution.trim() !="" && typeName.trim() !="") {
                    throw new Exception("Search by choose all parameters is not exceptable");   
                } else {    
                    throw new Exception("You didn't put any search parameters");    
                }           
            return "search";
        }

}

它给了我这样一个错误:

警告:org.springframework.web.servlet.页面没有发现任何映射的HTTP请求与URI[/控制器/]在DispatcherServlet名称'appServlet'Hibernate:选择不同的creationda0_。DATE_IDDATE1_0_creationda0_CHILD_ADMISSION_DATECHILD2_0_creationda0_CHILD_GO_SCHOOL_DATECHILD3_0_creationda0_PARTICULAR_DATEPARTICULAR4_0_creationda0_VERSION0_CREATION_DATEcreationda0_警告:org.hibernate.util.JDBCExceptionReport-SQL错误:0,SQLState:S1009错误:org.hibernate.util.JDBCExceptionReport-值'0000-00-00'不能表示为java.sql.Date Jun19, 2013 3:26:53PMorg.apache.catalina.core.标准WrapperValve调用SEVERE: Servlet.service()为servlet[appServlet]在上下文中与路径[/控制器]抛出异常[请求处理失败;嵌套异常org.hibernate.exception.GenericJDBCExc农田:无法执行查询]根本原因java.sql.SQL异常:值'0000-00-00'不能表示为java.sql.日期

如果你需要我的实体类,我在这里使用Datefromjava.util,但是我使用@Temporal注释将其从SQL转换为单元Date据我所知:

@Entity
@Table(name="CREATION_DATE")
public class CreationDate implements Serializable {


    private int dateId;

        @Id
        @GeneratedValue(strategy=IDENTITY)
        @Column(name="DATE_ID")
        public int getDateId() {
            return dateId;
        }

        public void setDateId(int dateId) {
            this.dateId = dateId;
        }


    private int version;

        @Version
        @Column(name="VERSION")
        public int getVersion() {
            return version;
        }

        public void setVersion(int version) {
            this.version = version;
        }


    private Date particularDate;

        @Temporal(TemporalType.DATE)
        @DateTimeFormat(pattern="yyyy-MM-dd")
        @Column(name="PARTICULAR_DATE")
        public Date getParticularDate() {
            return particularDate;
        }

        public void setParticularDate(Date particularDate) {
            this.particularDate = particularDate;
        }


    private Date childGoSchoolDate;

        @Temporal(TemporalType.DATE)
        @DateTimeFormat(pattern="yyyy-MM-dd")
        @Column(name="CHILD_GO_SCHOOL_DATE")
        public Date getChildGoSchoolDate() {
            return childGoSchoolDate;
        }

        public void setChildGoSchoolDate(Date childGoSchoolDate) {
            this.childGoSchoolDate = childGoSchoolDate;
        }


    private Date childAdmissionDate;

        @Temporal(TemporalType.DATE)
        @DateTimeFormat(pattern="yyyy-MM-dd")
        @Column(name="CHILD_ADMISSION_DATE")
        public Date getChildAdmissionDate() {
            return childAdmissionDate;
        }

        public void setChildAdmissionDate(Date childAdmissionDate) {
            this.childAdmissionDate = childAdmissionDate;
        }


}

假设数据类型转换的问题是因为MVC使用String,但实际类型是Date


共有3个答案

颛孙沈义
2023-03-14

将zeroDateTimeBehavior=convertToNull添加到jdbc连接URL。

String jdbcUrl="jdbc:mysql://localhost:3306/master_schema?zeroDateTimeBehavior=convertToNull"
和弘博
2023-03-14

用JDBC-mysql协议追加以下语句:

"?zeroDateTimeBehavior=convertToNull&autoReconnect=true&characterEncoding=UTF-8&characterSetResults=UTF-8"

例如:

jdbc:mysql://localhost/infra?zeroDateTimeBehavior=convertToNull&autoReconnect=true&characterEncoding=UTF-8&characterSetResults=UTF-8
费子濯
2023-03-14
匿名用户

在MySql中,“0000-00-00”被认为是一个有效的日期,但不能作为java表示。sql。日期

如果日期为'0000-00-00',则可以使用返回NULL的查询,否则返回实际值:

SELECT
  CASE WHEN `date`!='0000-00-00' THEN `date` END new_date
FROM
  yourtable

或者,您可以向数据源连接字符串中添加以下内容:

zeroDateTimeBehavior=convertToNull

日期'0000-00-00'将自动转换为空。

 类似资料:
  • 问题内容: 我正在做一个需要从数据库中提取数据的项目,我使用Spring MVC从数据库中构建模型以选择数据。 这是我的 JSP页面 的问题 : 如您所见,我尝试从标记库中使用。 问题: 但是当使用此 控制器 准备我的模型时 : 它给我这样的错误: 路径为[/ controller]的servlet [appServlet]的service()抛出异常[请求处理失败;嵌套的异常是org.hiber

  • 我有一个包含日期的数据库表 有没有什么方法可以在不改变表结构的情况下获得?

  • 问题内容: 我有一个包含日期的数据库表 我正在使用MySQL。有时从程序中将没有日期的数据传递到数据库。因此, 当使用带错误的日期列调用表数据时,日期值会自动分配给它 在插入数据时,我尝试将null值传递给日期,但是将其分配给当前时间。 有什么办法可以在不更改表结构的情况下获得? 问题答案: 您可以在数据源配置中直接使用此JDBC URL: jdbc:mysql://您的服务器:3306 /您的数

  • 问题内容: 我最近接手了一个十年前创建的旧项目。它使用MySQL 5.1。 除其他外,我需要将默认字符集从latin1更改为utf8。 例如,我有这样的表: 我设置了自己的Mac来进行此工作。不用考虑太多,我运行了“ brew install mysql”,它安装了MySQL 5.7。所以我有一些版本冲突。 我下载了此数据库的副本并将其导入。 如果我尝试运行这样的查询: 我收到此错误: 我以为可以

  • 我想在MySQL中允许零日期。我已将更改为。 我已经在中更改了它。 然而,当我尝试插入数据时,我得到了错误, 数据截断:不正确的datetime值:“0000-00-00 00:00:00” MySQL版本为5.7.18。 这方面的任何想法都将大有帮助。

  • 我引用了许多题目,题目和我的题目相同,但它们的方法和问题不同,所以这个题目不是重复的。 我有一个表,其中是类型,并且具有默认值。 通过网站插入工作正常,但当我尝试通过插入任何值时,我得到以下错误。 版本为。还有一件事,最近我们的服务器已经从升级到。 下面是查询 在升级之后,我们就开始面临这个问题