【问题标题】:Can't store OneToMany relationsship in my Database无法在我的数据库中存储一对多关系
【发布时间】:2018-03-31 09:56:42
【问题描述】:

我对 JPA 中的 @OneToMany 关系有疑问。我想保存客户和消息对象之间的关系,但我得到了 NullPointerException。我不知道为什么,因为我认为下面的代码会顺利运行。

这是我尝试做的:

            Customer  new = new Customer();
            new.setEmail(email);
            new.setUserId(userId);
            new.setLastname(lastname);
            new.setFirstname(firstname);
            new.setPhone(phone);

            quick.customerNew(new);

            Messages msg = new Messages ();
            msg.setMessage(message);

            quick.newMessage(msg);

            //Here i got the NullPointerException
            new.getCustomerMessages.add(msg);

            quick.customerUpdate(new);

客户对象和消息对象存储在数据库中。但是这种关系并不存在,正如我所说,我得到了 NullPointerException

 public class Customer implements Serializable {

   [...]

   @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
   @JoinColumn(name = "_id_info", referencedColumnName = "_id")
   private Set<Messages> customerMessages;

   [getter/setter]
 }

【问题讨论】:

  • 这个 JSF 有什么关系(除了你使用它)
  • 这对我来说很奇怪。这是否与分配给客户的这个新的一起编译?它是一个关键字。
  • Message 是否有 Customer as ManyToOne 关系?
  • 什么是快速对象顺便说一句.. 请发布您的真实代码

标签: jpa jakarta-ee entity


【解决方案1】:
//Here i got the NullPointerException
new.getCustomerMessages.add(msg);

如果这一行抛出NullPointerException,它可能意味着两件事:要么“新”(天哪,只是将其作为变量名输入会很痛)是null,或者getCustomerMessages() 返回null

由于您的代码达到了这一点,通过之前多次访问“new”,我假设“new”不是这里的罪魁祸首。

由于您从未在代码中调用 setCustomerMessages(),并且没有迹象表明任何其他调用会设置您的 customerMessages 属性,我认为这将是您需要设置的成员。

【讨论】:

    猜你喜欢
    • 2014-08-18
    • 2012-09-06
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多