У меня есть две таблицы, как показано ниже.
«User Acc» - это данные профиля пользователя, а данные для входа в систему (пароль пользователя) находятся в отдельной таблице, называемой login. Когда я генерировал сущности в IDE Netbeans, для таблицы входа в систему (базы данных) было 2 таблицы. Один сгенерированный объект - «Login», другой - «LoginId». Сущность Login имеет ссылку на LoginId и UserAcc. У объекта LoginId есть имя пользователя и пароль, которые были в таблице базы данных входа в систему. UserAcc имеет первичный ключ, который является INT для каждого пользователя. Этот ключ является внешним ключом таблицы входа в систему.
Теперь я хочу проверить user @ loging. Как я это делаю, я создаю экземпляр LoginId и устанавливаю имя пользователя и пароль, а затем проверяю любой объект с таким же LoginId. Вот код.
uName и pw являются строками и взяты из пользовательского ввода.
LoginId id=new LoginId(uName, pw);
Session ses = NewHibernateUtil.getSessionFactory().openSession();
Criteria crit = ses.createCriteria(Login.class);
crit.add(Restrictions.eq("id", id));
Entities.Login log = (Entities.Login)crit.uniqueResult();
Но даже если существующие имена пользователей и пароли совпадают с заданными именем пользователя и паролем, log
всегда равен нулю.
Кто-нибудь скажет мне, где я должен проверить и в чем проблема. Спасибо.
И другая моя проблема заключается в том, почему для двух столбцов (первичных ключей) в одной таблице базы данных и для другого объекта этой таблицы базы данных создается отдельный объект («LoginId»).
для входа в систему;
<hibernate-mapping>
<class name="Entities.Login" table="login" catalog="pcw">
<composite-id name="id" class="Entities.LoginId">
<key-property name="uname" type="string">
<column name="uname" length="10" />
</key-property>
<key-property name="pw" type="string">
<column name="pw" length="10" />
</key-property>
</composite-id>
<many-to-one name="useracc" class="Entities.Useracc" fetch="select">
<column name="UserAcc_uid" not-null="true" />
</many-to-one>
</class>
для UserAcc:
<hibernate-mapping>
<class name="Entities.Useracc" table="useracc" catalog="pcw">
<id name="uid" type="java.lang.Integer">
<column name="uid" />
<generator class="identity" />
</id>
<property name="fname" type="string">
<column name="fname" length="45" />
</property>
<property name="sname" type="string">
<column name="sname" length="45" />
</property>
<property name="RDate" type="date">
<column name="r_date" length="10" />
</property>
<property name="street" type="string">
<column name="street" length="45" />
</property>
<property name="city" type="string">
<column name="city" length="45" />
</property>
<property name="email" type="string">
<column name="email" length="45" />
</property>
<property name="tel" type="string">
<column name="tel" length="45" />
</property>
<set name="comments" inverse="true" cascade="all">
<key>
<column name="UserAcc_uid" not-null="true" />
</key>
<one-to-many class="Entities.Comment" />
</set>
<set name="logins" inverse="true" cascade="all">
<key>
<column name="UserAcc_uid" not-null="true" />
</key>
<one-to-many class="Entities.Login" />
</set>
</class>