У меня есть таблицы транзакций, которые содержат 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 + '}';
}
Критерии на TransactionItem отлично работают, будут доступны все данные TransactionItem, включая данные транзакции. Критерии в транзакции не возвращают элемент в список результатов, но в таблице фактических транзакций содержится более 70 записей. –
Вы проверили окончательный сгенерированный оператор SQL из журналов? – ajoshi