我尝试使用Entity Class和Entity Manager将记录插入数据库(MySQL)。但其中一个字段是自动递增主键,因此除非我手动提供值,否则插入不成功。
public boolean newContributor(String name, String email, String country, Integer contactable, String address) {
Contributors contributor = new Contributors(); //entity class
contributor.setId(??????); //this is Primary Key field and is of int datatype
contributor.setName(name);
contributor.setEmail(email);
contributor.setCountry(country);
contributor.setContactable(contactable);
contributor.setAddress(address);
em.persist(contributor);
return true;
}
如何解决这样的问题?有没有办法告诉实体管理器在没有ID字段的情况下尝试插入,而是使用NULL
值。
更新: 以下是定义id
...
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@NotNull
@Column(name = "id")
private Integer id;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 50)
....
答案 0 :(得分:1)
有没有办法告诉实体经理尝试插入没有ID字段并改为使用NULL值?
不确定。您需要删除@NotNull
定义中id
字段的@Entity
注释,并删除该行:
contributor.setId(??????);
来自方法newContributor()
。原因是@NotNull
注释在JPA堆栈中强制执行验证检查。这并不意味着该字段在数据库级别为NOT NULL。请参阅here关于此问题的讨论。
其余的代码看起来很好。