尝试通过Invoice对象获取用户时出现javax.persistence.EntityNotFoundException错误
invoice.getUser()。getId()
javax.persistence.EntityNotFoundException: Unable to find com.indianretailshop.domain.User with id 5 at org.hibernate.ejb.Ejb3Configuration$Ejb3EntityNotFoundDelegate.handleEntityNotFound(Ejb3Configuration.java:137) at org.hibernate.proxy.AbstractLazyInitializer.checkTargetState(AbstractLazyInitializer.java:189) at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:178) at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:215)
@Entity @Table(name="users") public class User implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(unique=true, nullable=false) private int id; . . . //bi-directional many-to-one association to Invoice @OneToMany(mappedBy="user") private List<Invoice> invoices; } @Entity @Table(name="invoice") public class Invoice implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(unique=true, nullable=false) private int id; . . . //bi-directional many-to-one association to User @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="Users_id") private User user; }
问题可能是直接实体不存在,也可能是该实体中的引用实体,通常用于EAGER访存类型,或optional = false。
尝试这个:
//bi-directional many-to-one association to User @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="Users_id") private User user = new User();