spring实体为空,尽管我使用了新操作符

bgtovc5b  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(280)

我不知道为什么这个对象是空的。这是我项目中的一个实体。我用的是spring,lombok,hibernate和vaadin。我想示例化一个新组。在我的实体类中:

@Entity
@Data
@NoArgsConstructor
@EqualsAndHashCode(of = { "groupSid" })
@Table(name = "ad_group")

public class Group implements Comparable<Group> {

@Id
@Column(name = "group_sid")
private String groupSid;

private String name;

@ManyToMany(mappedBy = "memberOf", fetch = FetchType.LAZY)
private Set<Person> persons;

@OneToMany(mappedBy = "group", fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
private Set<Authority> authorities;

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

@Override
public int compareTo(Group o) {
   return getName().compareTo(o.getName());
}

@Override
public String toString() {
   return name;
 }

}

在组的编辑对话框中,我使用以下代码来保存组的详细信息。

btnSave.addClickListener(e -> {

     Group toSave = new Group();
     System.out.println("toSave: " + toSave);
     toSave.setGroupSid(selectedGroup.getGroupSid());
     toSave.setTicketId(tfTicket.getValue());
     if (toSave != null) {
        Group savedGroup = service.saveGroup(toSave);
        if (savedGroup != null) {
           parentView.updateUsers(selectedPerson, null, savedGroup);
        }
     }

     close();
  });

执行代码时,显示以下输出:

toSave: null

组怎么可以为空?我做错什么了?

sauutmhj

sauutmhj1#

创建对象时,对象不为null,但名称为 null .

System.out.println("toSave: " + toSave);

上面的代码将执行tostring方法,名称将被打印。它返回 null .

puruo6ea

puruo6ea2#

对象本身不是 null 仅限 namenull 这就是为什么

@Override
public String toString() {
   return name;
 }

退货 null .
这个方法在system.out.println语句中被隐式调用 System.out.println("toSave: " + toSave);

相关问题