Ich habe Probleme mit JPA
. Wir haben eine Datenbank, in der nicht alle Fremdschlüssel konsistent sind. Daher verwenden wir @NotFound(Ignore)
, siehe Code unten. Aber manchmal wirft es Ausnahmen wie:JPA/Hibernate @NotFound Ignorieren funktioniert nicht, wenn ID = 0
javax.persistence.EntityNotFoundException: Kann nicht com.kiga.s3.domain.S3Image mit id 0
Das geschieht nur finden, wenn der Fremdschlüssel 0
(Wenn ich die ID zu 9999999
in der DB ändern, funktioniert es). Was verursacht dieses Verhalten und was muss ich tun, um es zu beheben?
Hier ist unsere Einheit Code
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 Generation, um eine Verbindung mit
nicht@Entity
public class S3Image{
@Id
@Column(name = "ID")
@GeneratedValue
private Long id;
@Column(name = "URL")
private String url;
}
Bezug haben, Peter
@NotFound (was immer das ist) nichts mit JPA zu tun. Vielleicht klar, welches Paket es ist in –
yeah NotFound und NotFoundAction sind beide Ruhezustand, fügte ich die Importe in das Code-Snippet –
Bitte geben Sie die Entität "S3Image". Hat es eine ID-Generation? Wenn dies der Fall ist, beginnt bei den meisten SQL-Servern die Autoinkrement-Funktion bei 1 ... also ID = 0 wird nicht existieren. Wenn Sie ein S3Image mit id = 0 persistieren, wird es als "bis zur nächsten verfügbaren ID zählen" interpretiert. –