2016-03-28 2 views
0

У меня есть таблицы транзакций, которые содержат FK в родительской таблице «транзакции». У меня нет проблем с запросом таблиц «transactionitems», которые разрешают строки транзакций. Однако, когда я делаю прямой запрос к таблице транзакций, я не получаю никаких результатов. Я не вижу никаких ошибок или исключений в консоли.Простой спящий режим не работает, но каскадные запросы:

Способ вызова, как в следующем производит правильные результаты

Session s = DataAccess.ObtainSession(); 
     Criteria cr = s.createCriteria(TransactionItem.class); 
     cr.createAlias("transaction", "transaction"); 
     cr.add(Restrictions.eq("transaction.id", txid)); 
     List<TransactionItem> results = cr.list(); 

Но простой метод обратный вызов пустой список

Session s = DataAccess.ObtainSession(); 
     Criteria cr = s.createCriteria(Transaction.class); 
     List<Transaction> list = cr.list(); 

Hibernate отображение файлов и классов ниже

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
    <class name="com.beraben.drycleanpos3.entities.Transaction" table="transactions"> 
     <id column="id" name="id"> 
      <generator class="increment"/> 
     </id> 
     <property name="customerName" column="customer_name"/> 
     <property name="customerContact" column="customer_contact"/> 
     <property name="createdDate" type="date" column="created_datetime"/> 
     <property name="dueDate" type="date" column="due_datetime"/> 
     <property name="readyDate" type="date" column="ready_datetime"/> 
     <property name="jobClosedDate" type="date" column="job_closed_datetime"/> 
     <property name="notes" /> 
    </class> 
</hibernate-mapping> 

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
    <class name="com.beraben.drycleanpos3.entities.TransactionItem" table="transaction_items"> 

     <id column="id" name="id"> 
      <generator class="increment"/> 
     </id> 
     <many-to-one class="com.beraben.drycleanpos3.entities.Transaction" column="transaction_id" name="transaction" cascade="merge" not-null="true" /> 
     <property name="garmentTypeName" column="garment_type_name"/> 
     <property name="jobTypeName" column="job_type_name"/> 
     <property name="price"/> 
     <property name="notes"/> 

    </class> 
</hibernate-mapping> 



public class TransactionItem { 
    private int id; 
    private Transaction transaction; 
    private String garmentTypeName; 
    private String jobTypeName; 
    private int price; 
    private String notes; 


    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public Transaction getTransaction() { 
     return transaction; 
    } 

    public void setTransaction(Transaction transaction) { 
     this.transaction = transaction; 
    } 

    public String getGarmentTypeName() { 
     return garmentTypeName; 
    } 

    public void setGarmentTypeName(String garmentTypeName) { 
     this.garmentTypeName = garmentTypeName; 
    } 

    public String getJobTypeName() { 
     return jobTypeName; 
    } 

    public void setJobTypeName(String jobTypeName) { 
     this.jobTypeName = jobTypeName; 
    } 

    public int getPrice() { 
     return price; 
    } 

    public void setPrice(int price) { 
     this.price = price; 
    } 

    public String getNotes() { 
     return notes; 
    } 

    public void setNotes(String notes) { 
     this.notes = notes; 
    } 



} 



public class Transaction { 
    private int id; 
    private String customerName; 
    private String customerContact; 

    @JsonSerialize(using = CustomDateSerializer.class) 
    private Date createdDate; 

    @JsonSerialize(using = CustomDateSerializer.class) 
    private Date dueDate; 

    @JsonSerialize(using = CustomDateSerializer.class) 
    private Date readyDate; 

    @JsonSerialize(using = CustomDateSerializer.class) 
    private Date jobClosedDate; 

    private String notes; 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getCustomerName() { 
     return customerName; 
    } 

    public void setCustomerName(String customerName) { 
     this.customerName = customerName; 
    } 

    public String getCustomerContact() { 
     return customerContact; 
    } 

    public void setCustomerContact(String customerContact) { 
     this.customerContact = customerContact; 
    } 

    @JsonSerialize(using = CustomDateSerializer.class) 
    public Date getCreatedDate() { 
     return createdDate; 
    } 

    @JsonSerialize(using = CustomDateSerializer.class) 
    public void setCreatedDate(Date createdDate) { 
     this.createdDate = createdDate; 
    } 

    @JsonSerialize(using = CustomDateSerializer.class) 
    public Date getDueDate() { 
     return dueDate; 
    } 

    @JsonSerialize(using = CustomDateSerializer.class) 
    public void setDueDate(Date dueDate) { 
     this.dueDate = dueDate; 
    } 

    @JsonSerialize(using = CustomDateSerializer.class) 
    public Date getReadyDate() { 
     return readyDate; 
    } 

    @JsonSerialize(using = CustomDateSerializer.class) 
    public void setReadyDate(Date readyDate) { 
     this.readyDate = readyDate; 
    } 

    @JsonSerialize(using = CustomDateSerializer.class) 
    public Date getJobClosedDate() { 
     return jobClosedDate; 
    } 

    @JsonSerialize(using = CustomDateSerializer.class) 
    public void setJobClosedDate(Date jobClosedDate) { 
     this.jobClosedDate = jobClosedDate; 
    } 

    public String getNotes() { 
     return notes; 
    } 

    public void setNotes(String notes) { 
     this.notes = notes; 
    } 

    @Override 
    public String toString() { 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
     return "Transaction{" + "id=" + id + ", customerName=" + customerName + ", customerContact=" + customerContact + ", createdDate=" + sdf.format(createdDate) + ", dueDate=" + sdf.format(dueDate) + ", readyDate=" + readyDate + ", jobClosedDate=" + jobClosedDate + ", notes=" + notes + '}'; 
    } 

ответ

0

На самом деле эти вопросы должны были отправиться в качестве комментариев к вашему вопросу, но, к сожалению У меня пока нет разрешений.

Ваше сопоставление показывает, что вы сопоставили транзакцию в TransactionItem, но не получили ссылку от транзакции на TransactionItem. В этом контексте вы можете быть немного более конкретными в отношении результатов?

  1. По вашему запросу на Transaction, не вы получаете абсолютно никаких результатов или вы говорите, что TransactionItem данные не включены в результат?

  2. Когда вы выполняете запрос на TransactionItem, вы видите данные Transaction?

Кроме того, проверьте журнал в последнем запросе, используемом Hibernate для получения данных. Он может дать представление о том, почему он не работает, если вы попытаетесь выполнить его непосредственно в SQL.

+0

Критерии на TransactionItem отлично работают, будут доступны все данные TransactionItem, включая данные транзакции. Критерии в транзакции не возвращают элемент в список результатов, но в таблице фактических транзакций содержится более 70 записей. –

+0

Вы проверили окончательный сгенерированный оператор SQL из журналов? – ajoshi

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