Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
列类型为long且具有空值的JPA实体_Jpa_Null_Long Integer - Fatal编程技术网

列类型为long且具有空值的JPA实体

列类型为long且具有空值的JPA实体,jpa,null,long-integer,Jpa,Null,Long Integer,我是JPA的新手。我正在使用spring数据,我想创建一个实体“文件”(文件夹就是一个文件)。每个文件都可以有一个父级(或没有父级)。 这是我的表的列:id、name、path、mtime、parentid 我在我的实体中使用了这个 @ManyToOne @JoinColumn(name = "parentid") private File parent; public File() {} public File(String name, String path,File

我是JPA的新手。我正在使用spring数据,我想创建一个实体“文件”(文件夹就是一个文件)。每个文件都可以有一个父级(或没有父级)。 这是我的表的列:id、name、path、mtime、parentid

我在我的实体中使用了这个

@ManyToOne
 @JoinColumn(name = "parentid")
 private File parent;

    public File() {}

    public File(String name, String path,File parent) {
        this.name = name;
        this.path=path;  
        this.parent=parent;
    }

         @Override
        public String toString() {
            return String.format(
                    "File[ id=%d,name='%s', path='%s',parentid=%d]",
                    id,name, path,parent.id);
        }
在我的测试中,我做到了:

     fileRepository.save(new File("file1","file1",null));
    File file1=fileRepository.findOne((long) 1);
    fileRepository.save(new File("file2","file2",file1));
它插入了parentid为NULL的第一行和parentid为1的第二行(第一个文件)

我想展示台词,所以我这样做:

for (Object element : Lists.newArrayList(fileRepository.findAll())) {
        System.out.println(element);
    }
但它不起作用。 当我从toString()函数中删除parentid时,我得到了正确的结果:

File[ id=1,name='file1', path='file1']
File[ id=2,name='file2', path='file2']
如果我添加一个Long类型的新列,并且其中一行在该列中有空值,我会遇到同样的问题。 如何修复此问题?

您的
toString()
方法“不起作用”,因为您试图获取空父级的id,这显然会导致NullPointerException。在尝试获取和打印其ID之前,您需要测试父项是否为null。读取异常的消息、类型和堆栈跟踪将允许您找到这一点。也可以使用调试器

long
类型的变量不能保持
null
。基元类型不可为空。因此,您需要对该字段使用类型
java.lang.Long