JPA / Hibernate @NotFound如果ID = 0

时间:2016-05-03 07:59:08

标签: java spring hibernate jpa

我遇到JPA时遇到问题。我们有一个数据库,其中并非所有外键都是一致的,因此我们使用@NotFound(Ignore),请参阅下面的代码。但有时它会引发例外情况:

  

javax.persistence.EntityNotFoundException:无法找到   com.kiga.s3.mainmain.S3Image,ID为0

仅当外键为0时才会发生这种情况(如果我在其工作的数据库中将id更改为9999999)。导致此行为的原因是什么,我需要做些什么来解决它?

这是我们的实体代码

import org.hibernate.annotations.NotFound;
import org.hibernate.annotations.NotFoundAction;
@Entity
    public class KigaPageImage extends KigaEntityModel {
      @Column(name = "name")
      private String title;
      private String locale;
      private Long imageId;

      @ManyToOne
      @JoinColumn(name = "kigaPageID", referencedColumnName = "id")
      @NotFound(action = NotFoundAction.IGNORE)
      private KigaPage kigaPage;

      @ManyToOne
      @JoinColumn(name = "s3ImageID", referencedColumnName = "id")
      @NotFound(action = NotFoundAction.IGNORE)
      private S3Image s3Image;

      public S3Image getS3Image() {
        return s3Image;
      }

      public void setS3Image(S3Image s3Image) {
        this.s3Image = s3Image;
      }
    }

生成S3Image ID,与

没有连接
@Entity
public class S3Image{
  @Id
  @Column(name = "ID")
  @GeneratedValue
  private Long id;

  @Column(name = "URL")
  private String url;
}

的问候, 彼得

1 个答案:

答案 0 :(得分:0)

你可以确认你没有多次访问包含给定实体的循环中的实体吗?

我怀疑Hibernate的内部缓存可能与它有关。

问候, 赖