Jpa EntityManager.find将id设置为零

Jpa EntityManager.find将id设置为零,jpa,entitymanager,Jpa,Entitymanager,我有一个带有JPA的MySQL数据库和一些类似的类: @Entity public class Person implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) protected long id; //some Attributes @PersistenceContext

我有一个带有JPA的MySQL数据库和一些类似的类:

@Entity
public class Person implements Serializable {
  private static final long serialVersionUID = 1L;
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  protected long id;

  //some Attributes
@PersistenceContext private EntityManager em;
public Person searchPerson() {
Person p = em.find(Person.class, 5L);
Logger.getGlobal().log(Level.INFO, "ID:" + p.getId());
return p;
}
当我在数据库中搜索以下实例时:

@Entity
public class Person implements Serializable {
  private static final long serialVersionUID = 1L;
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  protected long id;

  //some Attributes
@PersistenceContext private EntityManager em;
public Person searchPerson() {
Person p = em.find(Person.class, 5L);
Logger.getGlobal().log(Level.INFO, "ID:" + p.getId());
return p;
}
将找到正确的对象,但之后该对象的id为0。记录器的输出也是“ID:0”

这怎么可能


没有任何例外或其他东西可以解释这一点。有人知道如何解决这个问题吗?

是的,我的问题中有一个输入错误。你会得到类似“ID:0”的东西吗?ot在方法结束后,您将id视为零?我将id:0作为日志输出,在方法结束后,对象的id仍然为0。为了确保这一点,请尝试使用直接成员变量重写toString方法,并在Logger之前打印它,然后让我知道您的输出。非常感谢你,Koitoer,通过这样做,我自己发现了问题。这不是jpa的问题,而是我的数据结构中的getter的愚蠢问题。有时,显而易见的事情是如此遥远:(.案件已结案