以下は私のPOJOです
class User extends AbstractDomainObject{
private String username;
private String password;
//setter and getter
}
class Notification extends AbstractDomainObject{
private String message;
private Set<User> notificationFor;
//setter and getter
}
class AbstractDomainObject{
private long id;
// setter and getter
}
以下は、上記の POJO のマッピングです。
User.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="User" table="user">
<id name="id" type="long" column="id">
<generator class="native" />
</id>
<property name="username" type="string">
<column name="username" />
</property>
<property name="password" type="string">
<column name="password" />
</property>
</class>
</hibernate-mapping>
Notification.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Notification" table="notification">
<id name="id" type="long" column="id">
<generator class="native" />
</id>
<set name="notificationFor" table="user_notification" lazy="false" cascade="all">
<key column="notification_id"/>
<many-to-many unique="true" class="User" column="user_id"/>
</set>
<property name="message" type="string">
<column name="message" />
</property>
</class>
</hibernate-mapping>
特定のユーザーの通知のリストが必要です。以下は私のdaoimplです。
public List<Notification> getNotification(User user) {
Session session = null;
List<Notification> notifications = null;
try {
session = getSessionFactory().openSession();
String queryString = "from Notification notification where notification.notificationFor IN (:user)";
Query query = session.createQuery(queryString);
query.setParameter("user", user);
notifications = query.list();
} catch (Exception e) {
e.printStackTrace();
}
return notifications;
}
上記のコード スニペットでは、query.list()行でエラーが発生しています。エラーは ERROR util.JDBCExceptionReporter - パラメータ 1 に値が指定されていません 。どこが間違っているのかわかりません。