58

Invoice オブジェクトを介してユーザーを取得しようとすると、javax.persistence.EntityNotFoundException エラーが発生します。

請求書.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クラスは以下の通り(getter、setterは含まず)

@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;
}
4

10 に答える 10

36

問題は、直接エンティティが存在しないことである可能性がありますが、通常は EAGER フェッチ タイプの場合、またはオプション = false の場合、そのエンティティから参照されるエンティティである可能性もあります。

これを試して:

     //bi-directional many-to-one association to User
     @ManyToOne(fetch=FetchType.LAZY)
     @JoinColumn(name="Users_id")
     private User user = new User();
于 2012-11-26T04:45:36.010 に答える
6

以下を試してください

@OneToMany(mappedBy="yourMappingattributeName",cascade=CascadeType.ALL)また

@OneToMany(mappedBy="yourMappingattributeName",cascade=CascadeType.MERGE)
于 2018-08-04T09:46:52.257 に答える
4

最近も同様の問題がありましたが、問題はDBに常にレコードが存在することです。そのため、調査を行ったところ、ある時点で、キャッシュされたエンティティが削除としてマークされ、DB からリロードする前にリロードが失敗したことがわかりました。それは私にとってFinalで起こりましHibernate 4.3.5たそれから私Hibernate 4.3.11は問題を解決するように見えるFinalにアップグレードします。

于 2016-04-07T06:42:25.683 に答える