私はJavaで4層のWebアプリケーションを構築しようとしています。 ORMとMySQLデータベース用のHibernate Frameworkを使用しています。 テーブル「プロジェクト」は、テーブル「アイデア」と一対一の関係にあります。私は何をしようとしている、次の関数を使用してのアイデアのリスト(またはセット)を取得することです:最初は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>
ご協力いただきありがとうございます。
あなたのアンサーに感謝しますが、あなたのcurrentSessionの代わりにHibernateUtil.getSessionFactory()。getCurrentSession()を使用するため、これらの関数をどこで実装するのかは静かではありません。私はすべてフラッシュを使用しない、私は休止状態が自動的にそれを行うと思います。 – Phil
私はHibernate Utilを使用しません。そして、フラッシュは私自身の実装です。 Hibernateはフラッシュを持たず、コミットしています。 – Siddharth