试图保存实体时出错,因为ID为空



我正在使用Java Spring创建一个应用程序。我有两个实体——用户和机器。

@Getter
@Setter
@Entity
@Table
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@NotNull
private Long id;
// etc.
}
@Getter
@Setter
@Entity
@Table
public class Machine {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@NotNull
private Long id;
@ManyToOne
@JoinColumn(name = "created_by")
@NotNull
private User createdBy;
}
当我保存一个新用户时,我是而不是传递id,它被成功保存。当我保存一台新机器并且我没有传递id时,我得到一个验证失败的错误。当我传递id或删除@NotNull时,它被成功保存。为什么呢?它以相同的方式定义,并且两个实体以相同的方式保存。

我得到的错误:ConstraintViolationImpl{interpolatedMessage='must not be null', propertyPath=id, rootBeanClass=class raf.edu.rs.nwpbackend.model.Machine, messageTemplate='{javax.validation.constraints.NotNull.message}'}

您可以从两个id中删除@NotNull。这个注释是一个bean验证,在数据库插入之前进行。

查看异常消息:javax.validation.constraints.NotNull.message

@NotNull表示数据成员是强制的,需要在该对象中设置因为您使用的是@Genratedvalue(),这意味着它在数据库中按增量顺序保存id@Id表示主键,它具有不显式为空的条件,您不需要提及它如果你提到它,那么你已经设置了id对象,你正在传递这就是为什么你得到错误。

相关内容

  • 没有找到相关文章

最新更新