关于hibernate的一对多ORM映射关系中一方Set<E>中空指针异常解决方案


实体类:

@Entity
public class Owners {
    private Integer ownersId;
    private String ownersName;
    private String ownersAddress;
    private String ownersCity;
    private Set<Pets> petsSet;--------->要new 一个HashSet<Pets>出来

    public Owners() {
    }

    public Owners(String ownersName) {
        this.ownersName = ownersName;
    }

    @Id
    @Column(name = "ownersId", nullable = false)
    public Integer getOwnersId() {
        return ownersId;
    }

    public void setOwnersId(Integer ownersId) {
        this.ownersId = ownersId;
    }

    @Basic
    @Column(name = "ownersName", nullable = false, length = 20)
    public String getOwnersName() {
        return ownersName;
    }

    public void setOwnersName(String ownersName) {
        this.ownersName = ownersName;
    }

    @Basic
    @Column(name = "ownersAddress", nullable = false, length = 100)
    public String getOwnersAddress() {
        return ownersAddress;
    }

    public void setOwnersAddress(String ownersAddress) {
        this.ownersAddress = ownersAddress;
    }

    @Basic
    @Column(name = "ownersCity", nullable = false, length = 40)
    public String getOwnersCity() {
        return ownersCity;
    }

    public void setOwnersCity(String ownersCity) {
        this.ownersCity = ownersCity;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Owners owners = (Owners) o;

        if (ownersId != null ? !ownersId.equals(owners.ownersId) : owners.ownersId != null) return false;
        if (ownersName != null ? !ownersName.equals(owners.ownersName) : owners.ownersName != null) return false;
        if (ownersAddress != null ? !ownersAddress.equals(owners.ownersAddress) : owners.ownersAddress != null)
            return false;
        if (ownersCity != null ? !ownersCity.equals(owners.ownersCity) : owners.ownersCity != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = ownersId != null ? ownersId.hashCode() : 0;
        result = 31 * result + (ownersName != null ? ownersName.hashCode() : 0);
        result = 31 * result + (ownersAddress != null ? ownersAddress.hashCode() : 0);
        result = 31 * result + (ownersCity != null ? ownersCity.hashCode() : 0);
        return result;
    }

    @OneToMany(mappedBy = "owners")
    public Set<Pets> getPetsSet() {
        return petsSet;
    }

    public void setPetsSet(Set<Pets> petsSet) {
        this.petsSet = petsSet;
    }
}

测试类

@Test
 public void  petsAdd(){
     Session session= HibernateUtil.currentSession();
     Transaction tx=session.beginTransaction();
     PetsDao petsDao=new PetsDaoImpl();

     Pets pets=new Pets();
     Timestamp birth=Timestamp.valueOf("2017-1-13 12:00:00");
     pets.setPetsName("加菲");
     pets.setPetsBirthdate(birth);


    Pets pets1=new Pets();
    Timestamp birth1=Timestamp.valueOf("2016-1-13 12:00:00");
    pets1.setPetsName("灰熊");
    pets1.setPetsBirthdate(birth1);




     /*Types types=new Types();
     types.setTypesName("猫");
     types.getPetsSet().add(pets);*/


     Owners owners=new Owners();
     owners.setOwnersName("John");
     owners.getPetsSet().add(pets);
     owners.getPetsSet().add(pets1);


    pets.setOwners(owners);
    session.save(owners);
    tx.commit();
    HibernateUtil.closeSession();
 }


java.lang.NullPointerException

at com.lrq.test.TestPets.petsAdd(TestPets.java:53)


解决方案:将HashSet<Pets>中new 出 HashSet<Pets>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HaleyLiu123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值