Java 如何为给定的三个表编写hbm.xml

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

这里我尝试在三个表之间创建hibernet映射。
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>