Я работаю над приложением Spring MVC, в котором есть два класса модели: LocationModel и ContactModel. Ниже приведен код:Hibernate ObjectNotFoundException, даже если записи присутствуют в таблице
@Entity
@Table(name="Contact")
public class ContactModel {
@Id
@Column(name="contactid")
@GeneratedValue
private int contactId;
@Column(name="contactname")
private String contactName;
@Column(name="contactemail")
private String email;
@Column(name="contactphone")
private String phone;
@ManyToOne
@JoinColumn(name="locationid")
private LocationModel locationModel;
}
@Entity
@Table(name="Location")
public class LocationModel {
@Id
@Column(name="locationid")
@GeneratedValue
private int locationId;
@Column(name="locationname")
private String locationName;
@Column(name="locationdesc")
private String locationDescription;
@Column(name="type")
private String locationType;
@Column(name="address")
private String address;
@Column(name="state")
private String state;
@Column(name="circle")
private int circle;
@Column(name="district")
private int district;
@Column(name="town")
private int town;
@Column(name="lattitude")
private String lattitude;
@Column(name="longitude")
private String longitude;
@Column(name="locationuid")
private String locationUID;
@Column(name="category")
private String category;
@Column(name="bedcount")
private int bedCount;
@OneToMany(mappedBy = "locationModel", fetch = FetchType.EAGER)
private List<ContactModel> contactList;
}
Основной ключ в таблице местоположения - это внешний ключ в таблице контактов. У меня есть 2 записей в контактной таблице, с идентификатором местоположения 0.
Я использую следующий код для получения списка контактов:
Session session = sessionFactory.getCurrentSession();
Query query = session
.createQuery("from ContactModel where contactName like :contactName");
return query.setParameter("contactName", contactName + "%").list();
Но это показывает исключение:
Error performing load command : org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.bizmerlin.scm.model.LocationModel#0]
17:03:31,135 ERROR [stderr] (http--127.0.0.1-9090-2) org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.bizmerlin.scm.model.LocationModel#0]
17:03:31,139 ERROR [stderr] (http--127.0.0.1-9090-2) at org.hibernate.internal.SessionFactoryImpl$1$1.handleEntityNotFound(SessionFactoryImpl.java:247)
17:03:31,141 ERROR [stderr] (http--127.0.0.1-9090-2) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:214)
17:03:31,143 ERROR [stderr] (http--127.0.0.1-9090-2) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:264)
Возможно, это происходит из-за к тому факту, что в таблице местоположения нет записи с идентификатором местоположения 0. Если да, то как я могу получить список контактов, даже если их местоположение равно нулю?