Я пытаюсь создать 4-уровневое веб-приложение на Java. Я использую Hibernate Framework для ORM и базы данных MySQL. Таблица «Проект» имеет отношение «один ко многим» к «идее» таблицы. То, что я пытаюсь сделать, чтобы получить список (или набор) Идей с помощью следующей функции:MySQL/Hibernate Несогласованные структуры данных
public static List getProjectIdeas(int projectId)
{
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query q = session.createQuery("from Idea where id_project=" + projectId);
List<Idea> ideaList = (List<Idea>) q.list();
System.out.println(ideaList.size());
return ideaList;
}
Во-первых, он отлично работает, и я получаю все идеи из базы данных. Но когда я добавляю новые идеи в проект и снова вызываю функцию, я не всегда получаю полный список идей, связанных с проектом. Размер списка, который я получаю из q.list(), зависит от количества идей, хранящихся в базе данных до вставки и фактического количества идей. Это функция я использую, чтобы вставить идею в базу данных:
public static void writeObject(Object object)
{
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction tx = session.beginTransaction();
session.saveOrUpdate(object);
tx.commit();
}
Это мой первый проект спящего режима, поэтому я не знаю, если есть что-то не так с файлом конфигурации:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">***/ideator</property>
<property name="hibernate.connection.username">***</property>
<property name="hibernate.connection.password">***</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
<mapping resource="mapping/Category.hbm.xml"/>
<mapping resource="mapping/Rating.hbm.xml"/>
<mapping resource="mapping/Idea.hbm.xml"/>
<mapping resource="mapping/Participation.hbm.xml"/>
<mapping resource="mapping/Project.hbm.xml"/>
<mapping resource="mapping/Criteria.hbm.xml"/>
<mapping resource="mapping/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Заранее благодарим за помощь.
Спасибо за ваш anwser, но я не уверен, где реализовать эти функции, потому что вместо вашей текущей сессии я использую HibernateUtil.getSessionFactory(). GetCurrentSession(). Я вообще не использую флеш, я думаю, что hibernate делает это автоматически. – Phil
Я не использую Hibernate Util. И флеш - это моя собственная реализация. Hibernate не имеет флеша, он имеет фиксацию. – Siddharth