2014-09-11 4 views
0

im new для спящего режима и критериев, и им становится немного неприятно со следующим. Я пытаюсь получить список документов и единственные данные, у которых есть идентификатор клиента. Можно ли получить данные по Hibernate?Критерий спящего режима Выпуск 2

У меня есть следующие объекты

@Entity 
public class Document implements Serializable { 

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    private Long id; 

    @OneToMany(fetch=FetchType.LAZY) 
    @JoinColumn(name="documentId", referencedColumnName="id") 
    private List<Gd_Client> clientList; 
    (...) 

@Entity 
public class Gd_Client implements Serializable { 

@Id 
private long clientId; 
@Id 
private String SecId; 

(...) 

И в DAO:

public List<Document> getDocumentsbyClientId(Long clientId) { 

    Session session = entityManager.unwrap(Session.class); 
    Criteria crit = session.createCriteria(Document.class); 

    crit.add(Restrictions.eq("clientId",clientId)); 

    return crit.list(); 

} 

Я получаю следующее сообщение об ошибке:

ERROR: Parameter #1 has not been set. 
09/11/2014 11:27:44 com.opensymphony.xwork2.util.logging.commons.CommonsLogger error 
WARNING: Exception occurred during processing request: could not execute query 
org.hibernate.exception.SQLGrammarException: could not execute query 
+0

попытайтесь изменить эту строку crit.add (Restrictions.eq ("clientId", clientId)); ---> crit.add (Restrictions.eq ("Id", clientId)); – zumit

ответ

1

Criteria создан на Document лица и вы пытаетесь получить доступ к объекту clientId, которого нет в объекте Document, поэтому hibernate дает вам исключение.

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