Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用java.sql.Date返回列表<;对象>;?_Java_Spring - Fatal编程技术网

无法使用java.sql.Date返回列表<;对象>;?

无法使用java.sql.Date返回列表<;对象>;?,java,spring,Java,Spring,我有一个Java实体类,具有以下日期导入: import java.sql.Date; 实体正在声明日期。在我的存储库中,我有以下查询: @Query("SELECT new Filmographer (f.name, f.startDate) FROM Filmographers f") public List<Filmographer> getFilmographers(); 如果我同时从实体和存储库中删除了日期,它就可以正常工作 有人能给我解释一下为什么Java似乎在为我选

我有一个Java实体类,具有以下日期导入:

import java.sql.Date;
实体正在声明日期。在我的存储库中,我有以下查询:

@Query("SELECT new Filmographer (f.name, f.startDate) FROM Filmographers f")
public List<Filmographer> getFilmographers();
如果我同时从实体和存储库中删除了日期,它就可以正常工作

有人能给我解释一下为什么Java似乎在为我选择日期声明,而似乎忽略了我的Java.sql.date导入吗

更新:根据要求添加Pojo:

package com.example.Filmographer;

import java.io.Serializable;
import java.sql.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="Filmographers")
public class Filmographer implements Serializable {

    private static final long serialVersionUID = 1L;

    public Filmographer() {}

    public Filmographer(
        String name,
        Date startDate
    ) {
        this.name = name;
        this.startDate = startDate;
    }

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="filmographerid")
    private int filmographerId;

    @Column(name="name")
    private String name;

    @Column(name="startDate")
    private Date startDate;

    public int getFilmographerId() {
        return filmographerId;
    }

    public void setFilmographerId(int filmographerId) {
        this.filmographerId = filmographerId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

}

当错误试图告诉您时,您需要
java.util.Date
,而不是
sql
当错误试图告诉您时,您需要
java.util.Date
,而不是
sql
预期参数为:java.lang.String,java.util.Date

正如您所见,函数要求数据类型为 java.util.Date,而不是java.sql

现在,Spring轻量级的主要原因之一是POJO类,如果一个类引用sql,它将不是POJO类,因此会出现错误

现在您可以搜索一个类似的方法,该方法采用sql.Date。但此方法不是为处理数据类型java.sql.Date而构建的。

预期参数为:java.lang.String,java.util.Date

正如您所见,函数要求数据类型为 java.util.Date,而不是java.sql

现在,Spring轻量级的主要原因之一是POJO类,如果一个类引用sql,它将不是POJO类,因此会出现错误



现在您可以搜索一个类似的方法,该方法采用sql.Date。但此方法不是为处理数据类型java.sql.Date而构建的。

分享您的pojo PleaseGod问题,您能将狗保存在Dog扩展Animal的列表中吗?:)为什么在构造函数中有3个参数时,2个参数的构造函数出现错误???@amitmah这个java.sql.Date对于团队中的其他人来说运行良好。当我将其更改为util.Date时,会使其功能崩溃。我想问的是为什么这是一个问题,其次,这是一个可能的解决方案。@AmerQarabsa我已经用POJO更新了。谢谢。您正在尝试调用一个具有2个参数的构造函数,而您只有一个具有3个参数的构造函数…请分享您的pojo问题,您能将狗保存在狗扩展动物的列表中吗?:)为什么在构造函数中有3个参数时,2个参数的构造函数出现错误???@amitmah这个java.sql.Date对于团队中的其他人来说运行良好。当我将其更改为util.Date时,会使其功能崩溃。我想问的是为什么这是一个问题,其次,这是一个可能的解决方案。@AmerQarabsa我已经用POJO更新了。谢谢。你试图调用一个有2个参数的构造函数,而你只有一个有3个参数的构造函数……我也有同样的想法。但是为什么不使用sql.Date、java.time或Joda呢?我不理解的是,为什么只有一个日期声明(java.sql.Date)的空白实体正在请求java.util.Date。看起来很奇怪。@MindsectTeam:因为这就是Spring配置要使用的。特别是,POJO不应该引用SQL类。您需要将您的POJO修复为实际的POJO。这与Spring无关,它与hibernate的工作方式有关。在你的域/pojo/旁边。。。不应该依赖于
javax.sql
类,这意味着现在您的整个代码库都与sql相耦合(现在假设您想要移动MongoDB或其他东西……)。Hi@SLaks,因为java.sql.Date扩展了java.util.Date,所以sql Date是一个util Date我有同样的想法。但是为什么不使用sql.Date、java.time或Joda呢?我不理解的是,为什么只有一个日期声明(java.sql.Date)的空白实体正在请求java.util.Date。看起来很奇怪。@MindsectTeam:因为这就是Spring配置要使用的。特别是,POJO不应该引用SQL类。您需要将您的POJO修复为实际的POJO。这与Spring无关,它与hibernate的工作方式有关。在你的域/pojo/旁边。。。不应该依赖于
javax.sql
类,这意味着现在您的整个代码库都与sql相耦合(现在假设您想要移动MongoDB或其他东西……)。Hi@SLaks,因为java.sql.Date扩展了java.util.Date,所以sql日期是一个util日期
package com.example.Filmographer;

import java.io.Serializable;
import java.sql.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="Filmographers")
public class Filmographer implements Serializable {

    private static final long serialVersionUID = 1L;

    public Filmographer() {}

    public Filmographer(
        String name,
        Date startDate
    ) {
        this.name = name;
        this.startDate = startDate;
    }

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="filmographerid")
    private int filmographerId;

    @Column(name="name")
    private String name;

    @Column(name="startDate")
    private Date startDate;

    public int getFilmographerId() {
        return filmographerId;
    }

    public void setFilmographerId(int filmographerId) {
        this.filmographerId = filmographerId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

}