Я новичок в Hibernate Framework и работаю над очень простой структурой.
Сценарий:
У меня есть 2 таблицы, скажем, A и B. Столбец в A является внешним ключом вA и первичный ключ в B. Теперь я хочу изменить значение этого конкретного столбца в таблице A на соответствующее значение другого столбца в таблице B .... только для отображения в JSP, а не в самой базе данных.
Я хочу сделать это, потому что в таблице AI есть код, а в таблице BI - соответствующее значение, и я хочу отображать значение, а не код.
Как этого добиться?(может быть, Joins?)
Вот мой текущий код:
Hibernate Connection:
public class HibernateConnection {
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try {
// Create the SessionFactory from hibernate.cfg.xml
return new AnnotationConfiguration().configure().buildSessionFactory();
} catch (Throwable ex) {
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
Класс, в котором выполняется запрос:
public class contactQuery {
public List<contactPersistence> list(String whereClause){
Session session = HibernateConnection.getSessionFactory().getCurrentSession();
session.beginTransaction();
List<contactPersistence> contactList = null;
try {
contactList = (List<contactPersistence>) session.createQuery(" from contactPersistence " + whereClause).list();
session.getTransaction().commit();
} catch (HibernateException e) {
System.out.println(e.getMessage());
session.getTransaction().rollback();
}
return contactList;
}
}
Класс сохраняемости:
@Entity
@Table(name="Contacts")
public class contactPersistence implements Serializable{
private static final long serialVersionUID = -8767337896773261247L;
private String Contact_Code;
private String Name;
private String Customer_Code;
//other columns//
@Id
@GeneratedValue
@Column (name="Job_Title")
public String getJob_Title() {
return Job_Title;
}
public void setJob_Title(String Job_Title) {
this.Job_Title = Job_Title;
}
....
....
//other columns defined similarly
....
....
}
Здесь я хочу заменить customer_code на имя клиента из другой таблицы.Я попытался изменить значение в классе постоянства (в методе установки столбца), но это изменяет значение в самой базе данных с помощью команды обновления.Это не то, чего я хочу.
Любые предложения приветствуются.
И я предоставил информацию, которая, по моему мнению, будет достаточной, если это не так, пожалуйста, прокомментируйте. РЕДАКТИРОВАТЬ:
Это JSP, где я отображаю данные:
<s:iterator value="contactDetail" var="contactTable">
<tr>
<td><s:property value="Name"/></td>
<td><s:property value="Job_Title"/></td>
<td><s:property value="Email"/></td>
<td><s:property value="Phone"/></td>
<td><s:property value="Mobile"/></td>
<td><s:property value="Fax"/></td>
<td><s:property value="Address"/></td>
<td><s:property value="Notes"/></td>
</tr>
</s:iterator>
contactDetail и contactTable происходят из класса действия:
private List<contactPersistence> contactDetail;
public List<contactPersistence> getContactDetail() {
return contactDetail;
}
public void setContactDetail(List<contactPersistence> contactDetail) {
this.contactDetail = contactDetail;
}
private String contactTable;
public String getContactTable() {
return contactTable;
}
public void setContactTable(String contactTable) {
this.contactTable = contactTable;
}
private contactQuery contactQuery;
///////////////////contact detail is populated here//////////
this.contactDetail=contactQuery.list(deWhereClause);