gpt4 book ai didi

java - 如何在不定义主键字段的情况下使用实体管理器插入记录?

转载 作者:搜寻专家 更新时间:2023-11-01 03:42:40 24 4
gpt4 key购买 nike

我尝试使用实体类和实体管理器将记录插入数据库 (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)
....

最佳答案

Is there a way to tell the entity manager to attempt the insert without the ID field and use NULL value instead?

当然。您需要删除 @Entity 定义中 id 字段的 @NotNull 注释,并删除行:

contributor.setId(??????);

来自方法 newContributor()。这样做的原因是 @NotNull 注释在 JPA 堆栈中强制执行验证检查。这并不意味着该字段在数据库级别为 NOT NULL。参见 here关于这个问题的讨论。

其余代码看起来不错。

关于java - 如何在不定义主键字段的情况下使用实体管理器插入记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10648864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com