Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.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/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
Java 将具有空ArrayList的对象添加到我的存储库_Java_Jpa_Arraylist_Nullpointerexception_Many To Many - Fatal编程技术网

Java 将具有空ArrayList的对象添加到我的存储库

Java 将具有空ArrayList的对象添加到我的存储库,java,jpa,arraylist,nullpointerexception,many-to-many,Java,Jpa,Arraylist,Nullpointerexception,Many To Many,这是我的第一个问题,我是个十足的傻瓜。在Java工作了3个月,所以要温柔。我正在做一个在线登记跟踪婚礼和用户。用户可以有多个婚礼,反之亦然。这本质上是一种多对多关系,但我正在尝试另一种方法:将用户和婚礼类嵌入彼此的数组列表。像这样 package com.theironyard.Entities; import javax.persistence.*; import java.time.LocalDate; import java.util.ArrayList; import java

这是我的第一个问题,我是个十足的傻瓜。在Java工作了3个月,所以要温柔。我正在做一个在线登记跟踪婚礼和用户。用户可以有多个婚礼,反之亦然。这本质上是一种多对多关系,但我正在尝试另一种方法:将用户和婚礼类嵌入彼此的数组列表。像这样

    package com.theironyard.Entities;

import javax.persistence.*;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by macbookair on 12/8/15.
 */

@Entity
@Table(name = "weddings")
public class Wedding {

    public ArrayList <User> guests;
    // ArrayList here is to store users associated with Wedding. 

    @Id
    @GeneratedValue
    @Column(nullable = false)
     public int id;

    @Column(nullable = false)
    public String weddingName;

    @Column(nullable = false)
    public String location;

    @Column(nullable = false)
    public String date;


    public Wedding(){
    }

    public Wedding(String date, String location, String weddingName, int id) {
        this.date = date;
        this.location = location;
        this.weddingName = weddingName;
        this.id = id;
    }

    public Wedding(ArrayList guests) {
        this.guests = guests;
    }

    public int getId() {
        return id;
    }

    public ArrayList getGuests() {
        return guests;
    }

    public void setGuests(ArrayList guests) {
        this.guests = guests;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getWeddingName() {
        return weddingName;
    }

    public void setWeddingName(String weddingName) {
        this.weddingName = weddingName;
    }

    public String getLocation() {
        return location;
    }

    public void setLocation(String location) {
        this.location = location;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }
}
//将用户添加到婚礼类中的“来宾”数组列表中

    Invite invite =  new Invite();
    invite.isAdmin= true;
    invite.wedding= wedding;
    invite.email = user.email;
    user.userWeddings.add(wedding); // adding user to List in "User class"

    return wedding;
}
但是我得到了一个空指针异常,因为数组列表是空的。我的印象是,如果我没有明确地说它们是不可空的,那么默认情况下它们是不可空的。我考虑过添加(nullable=true)注释,但如果不将其作为数据库中的一列,我似乎无法做到这一点

基本上,我无法添加用户/婚礼对象,因为嵌入的ArrayList为null。即使解决了这个问题,也会有一种更简单的方法允许多个用户参加每个婚礼,反之亦然

您忘记声明定义用户和实体之间关系的JPA注释。(以上两个字段)

然后,如果您不必在User或users in Wedding中维护婚礼的任何顺序,则可以使用界面而不是列表(在您的示例中为ArrayList)来处理此双向关系的双方

注意:如果正确定义了此映射,则在托管实体(已持久化,未分离)中,与其他实体的关系中涉及的集合类型字段永远不会得到null值

另见

@RequestMapping(path = "/create-wedding", method = RequestMethod.POST)
public Wedding createWedding(@RequestBody Wedding wedding, HttpSession session) throws Exception {
    weddings.save(wedding);

    User user = users.findOneByEmail((String) session.getAttribute("email"));
    if (user == null) {
        throw new Exception("User does not exist");
    }
    wedding.guests.add(user);
    Invite invite =  new Invite();
    invite.isAdmin= true;
    invite.wedding= wedding;
    invite.email = user.email;
    user.userWeddings.add(wedding); // adding user to List in "User class"

    return wedding;
}