我有兩個表如下。 主鍵的獨立實體
「User Acc」是用戶的配置文件詳細信息,用戶的登錄詳細信息(用戶名密碼)位於一個名爲login的獨立表中。當我在Netbeans IDE中生成實體時,登錄(數據庫)表有2個表。一個生成的實體是「登錄」,另一個是「LoginId」。登錄實體具有對LoginId和UserAcc實體的引用。 LoginId實體具有登錄數據庫表中的用戶名和密碼.UserAcc的主鍵是每個用戶的INT,該鍵是登錄表的外鍵。
現在我想檢查用戶@登錄。我的做法是創建一個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();
但eventhough有現有的用戶名和密碼與給定的用戶名和密碼匹配,該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>
你能請張貼這兩個類之間的映射? –
當然是。感謝您的關注 –
我的主要問題是::我的表中有一個有2個主鍵。當實體類由Netbeans IDE生成時,ONE SEPERate實體被創建,包括2個主鍵。然後,實體表示該表具有對該單獨實體的引用,而其他實體表示該表的列。我在尋找爲什麼有一個單獨的實體類? –