2015-01-31 2 views
0

Я работаю над приложением 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. Если да, то как я могу получить список контактов, даже если их местоположение равно нулю?

ответ

Смежные вопросы