Ich habe eine indizierte Einheit, wie unten:Hibernate-Suchverhalten?
@MappedSuperclass
public static class Model{
@Id
@GeneratedValue(strategy=GenerationType.Identity)
private Integer id;
private boolean isDeleted;
}
und die indizierte Klasse:
@Entity
@Table("USERS")
@Indexed
public class ProductModel extends Model{
@Field
private String name;
//getters & setters
}
Nun, als ich auf ProductModel
eine Forschung zu tun, bekomme ich den Wert der Flagge isDeleted
während es ist nicht mit @Field
annotiert.
Ich frage, ob dies ein normales Verhalten ist, tut Hibernate-Suche Index das gesamte Objekt Oder holt es die fehlenden Daten aus der Datenbank, brauche ich eine Erklärung für dieses Verhalten bitte.
so was ist das genaue Verhalten, fragt es die Datenbank für jede Forschung ab? –
Bei einer typischen Suche, ja, führt sie die Abfrage gegen die Lucene-Indizes aus und führt dann eine Abfrage/Abfragen in der Datenbank aus, um die verwalteten Entitäten zu erstellen. Der einzige Fall, in dem dies nicht der Fall ist, ist, wenn Sie eine Projektion verwenden, um bestimmte Felder zurückzugeben, die direkt im Index gespeichert sind. Wie ich bereits erwähnt habe, ist dies eines der schönen Dinge der Hibernate-Suche. –