gpt4 book ai didi

hibernate - EntityManager.find 找不到实体,但使用 Criteria API 可以

转载 作者:行者123 更新时间:2023-12-04 09:43:31 25 4
gpt4 key购买 nike

我在 Java EE 6 中遇到了一个相当奇怪的情况,其中使用了 JPA EntityManager 的 find方法与实体的主 ID 一起返回 null,但使用 Criteria API 选择具有该 ID 的所有实体工作正常。

这是我用于 find 的代码:

// Always returns null, even for records I know for sure are in there.
user = em.find(User.class, userId);

...这是我在 Criteria API 中使用的代码:
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<User> criteria = builder.createQuery(User.class);
Root<User> u = criteria.from(User.class);
TypedQuery<User> query = em.createQuery(
criteria.select(u).where(builder.equal(u.get("id"), userId)));
user = query.getSingleResult();

知道为什么 find返回 null 但 Criteria 找到用户?我在程序中完全相同的地方尝试了这两种替代方法。

以下是 User 实体的相关部分:
@Entity
@Table(name = "USERS")
@Access(AccessType.PROPERTY)
public class User implements Serializable {
...
private Long id;
...
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "user_id_generator")
@SequenceGenerator(name = "user_id_generator", sequenceName = "user_sequence", allocationSize = 1)
@Column(name="id")
public Long getId() {
return this.id;
}

public void setId(Long id) {
this.id = id;
}
...
}

最佳答案

我解决了这个问题。这是由于数据库中的一个字段是 null不应该被允许的地方。这是由于我手动编辑它。在我向该字段添加值后,问题就消失了。

关于hibernate - EntityManager.find 找不到实体,但使用 Criteria API 可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3205256/

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