Java 如何为给定的三个表编写hbm.xml
这里我尝试在三个表之间创建hibernet映射。Java 如何为给定的三个表编写hbm.xml,java,hibernate,Java,Hibernate,这里我尝试在三个表之间创建hibernet映射。 atom存储用户唯一的名称和id,post_消息存储消息 likes是一个表,用于存储用户对消息的喜好(atom) 每当用户(atom)单击消息的like按钮(在jsp页面上)时,likes表中的数据都将被存储 我的表格结构如下所示 原子 喜欢 发帖 CREATE TABLE `post_messages` ( `messageid` bigint(200) NOT NULL AUTO_INCREMENT, `message` varchar
atom
存储用户唯一的名称和id,post_消息存储消息
likes
是一个表,用于存储用户对消息的喜好(atom)
每当用户(atom)单击消息的like按钮(在jsp页面上)时,likes表中的数据都将被存储
我的表格结构如下所示
原子
喜欢
发帖
CREATE TABLE `post_messages` (
`messageid` bigint(200) NOT NULL AUTO_INCREMENT,
`message` varchar(1000) DEFAULT NULL,
PRIMARY KEY (`messageid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我想为上表创建类和hbm.xml文件
为了解决上述问题,我根据下表创建了类
原子
邮递
public class PostMessages implements java.io.Serializable {
private Long messageid;
private String message;
private Set likes = new HashSet(0);
//getter setter and constructor of above
}
喜欢
休眠映射文件
Atom.hbm.xml
<hibernate-mapping>
<class name="hibernetMappings.Atom" table="atom" catalog="xrcwrn_sms">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<property name="name" type="string">
<column name="name" length="200" unique="true" />
</property>
<property name="type" type="string">
<column name="type" length="100" not-null="true" />
</property>
<set name="likes" table="likes" inverse="true" lazy="true" fetch="select">
<key>
<column name="aid" not-null="true" />
</key>
<one-to-many class="hibernetMappings.Likes" />
</set>
</hibernate-mapping>
PostMessages.hbm.xml
<hibernate-mapping>
<class name="hibernetMappings.PostMessages" table="post_messages" catalog="xrcwrn_sms">
<id name="messageid" type="java.lang.Long">
<column name="messageid" />
<generator class="identity" />
</id>
<property name="message" type="string">
<column name="message" length="1000" />
</property>
<property name="visibility" type="string">
<column name="visibility" length="100" />
</property>
<property name="totalLikes" type="java.lang.Long">
<column name="total_likes" />
</property>
<set name="likes" table="likes" inverse="true" lazy="true" fetch="select">
<key>
<column name="messageid" not-null="true" />
</key>
<one-to-many class="hibernetMappings.Likes" />
</set>
</hibernate-mapping>
<hibernate-mapping>
<class name="hibernetMappings.Likes" table="likes" catalog="xrcwrn_sms">
<composite-id name="id" class="hibernetMappings.Likes">
<key-property name="messageid" type="long">
<column name="messageid" />
</key-property>
<key-property name="aid" type="int">
<column name="aid" />
</key-property>
</composite-id>
<many-to-one name="atom" class="hibernetMappings.Atom" update="false" insert="false" fetch="select">
<column name="aid" not-null="true" />
</many-to-one>
<many-to-one name="postMessages" class="hibernetMappings.PostMessages" update="false" insert="false" fetch="select">
<column name="messageid" not-null="true" />
</many-to-one>
<property name="adddate" type="timestamp">
<column name="adddate" length="19" not-null="true" />
</property>
</hibernate-mapping>
Likes.hbm.xml
<hibernate-mapping>
<class name="hibernetMappings.PostMessages" table="post_messages" catalog="xrcwrn_sms">
<id name="messageid" type="java.lang.Long">
<column name="messageid" />
<generator class="identity" />
</id>
<property name="message" type="string">
<column name="message" length="1000" />
</property>
<property name="visibility" type="string">
<column name="visibility" length="100" />
</property>
<property name="totalLikes" type="java.lang.Long">
<column name="total_likes" />
</property>
<set name="likes" table="likes" inverse="true" lazy="true" fetch="select">
<key>
<column name="messageid" not-null="true" />
</key>
<one-to-many class="hibernetMappings.Likes" />
</set>
</hibernate-mapping>
<hibernate-mapping>
<class name="hibernetMappings.Likes" table="likes" catalog="xrcwrn_sms">
<composite-id name="id" class="hibernetMappings.Likes">
<key-property name="messageid" type="long">
<column name="messageid" />
</key-property>
<key-property name="aid" type="int">
<column name="aid" />
</key-property>
</composite-id>
<many-to-one name="atom" class="hibernetMappings.Atom" update="false" insert="false" fetch="select">
<column name="aid" not-null="true" />
</many-to-one>
<many-to-one name="postMessages" class="hibernetMappings.PostMessages" update="false" insert="false" fetch="select">
<column name="messageid" not-null="true" />
</many-to-one>
<property name="adddate" type="timestamp">
<column name="adddate" length="19" not-null="true" />
</property>
</hibernate-mapping>
我应该在上面做些什么改变。使之正确。@AniketKulkarni我已经看到了这一点,但不知道如何做到这一点
<hibernate-mapping>
<class name="hibernetMappings.Atom" table="atom" catalog="xrcwrn_sms">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<property name="name" type="string">
<column name="name" length="200" unique="true" />
</property>
<property name="type" type="string">
<column name="type" length="100" not-null="true" />
</property>
<set name="likes" table="likes" inverse="true" lazy="true" fetch="select">
<key>
<column name="aid" not-null="true" />
</key>
<one-to-many class="hibernetMappings.Likes" />
</set>
</hibernate-mapping>
<hibernate-mapping>
<class name="hibernetMappings.PostMessages" table="post_messages" catalog="xrcwrn_sms">
<id name="messageid" type="java.lang.Long">
<column name="messageid" />
<generator class="identity" />
</id>
<property name="message" type="string">
<column name="message" length="1000" />
</property>
<property name="visibility" type="string">
<column name="visibility" length="100" />
</property>
<property name="totalLikes" type="java.lang.Long">
<column name="total_likes" />
</property>
<set name="likes" table="likes" inverse="true" lazy="true" fetch="select">
<key>
<column name="messageid" not-null="true" />
</key>
<one-to-many class="hibernetMappings.Likes" />
</set>
</hibernate-mapping>
<hibernate-mapping>
<class name="hibernetMappings.Likes" table="likes" catalog="xrcwrn_sms">
<composite-id name="id" class="hibernetMappings.Likes">
<key-property name="messageid" type="long">
<column name="messageid" />
</key-property>
<key-property name="aid" type="int">
<column name="aid" />
</key-property>
</composite-id>
<many-to-one name="atom" class="hibernetMappings.Atom" update="false" insert="false" fetch="select">
<column name="aid" not-null="true" />
</many-to-one>
<many-to-one name="postMessages" class="hibernetMappings.PostMessages" update="false" insert="false" fetch="select">
<column name="messageid" not-null="true" />
</many-to-one>
<property name="adddate" type="timestamp">
<column name="adddate" length="19" not-null="true" />
</property>
</hibernate-mapping>