问题描述
比如我要定义一个用户实体,如User。在这个用户实体里面,我想要定义用户的好友、黑名单和关注对象。于是我用了Set<User>的方式,然后在配置文件中使用了<Set>的配置,Set内使用many-to-many方式。我的目的就是让User自关联对多对,生成一个中间表,如User_friends。这样一来在运行的时候没问题,能生成所有预想的表,且能插入数据到User_INFO(User对应的表)中,但无论如何都不能将数据写入到对多对的关联表中。请高手们赐教,感谢不尽。 package org.fantasizer.blog.core.entity;import java.io.Serializable;import java.util.Date;import java.util.Set;/** * [CN]用户实体 * * @author Marco Jee * @date 2010-11-1 */@SuppressWarnings("serial")public class User implements Serializable {// ----------------------Instance Variables---------------------------//private Long id;// primary keyprivate String loginname;// 登录名private String nickname;// 昵称private String password;// 密码MD5码private String email;// emailprivate Date birthdate;// 生日private String gender;// 性别private String marriage;// 婚姻状况private String msn;// msnprivate String qq;// qqprivate String phone;// 电话号码private String realname;// 真实姓名private String country;// 国家private String address;// 地址private String birthplace;// 出生地private String schoolname;private String strongSuit;// 特长private String personalSign;// 个性签名private Date lastLoginTime;// 上次登录时间private Date lastLogoutTime;// 上次注销时间private Date registerTime;// 注册时间private Date loginTime;// 本次登录时间private Integer loginCount;// 登录次数private String lastIp;// 上次登录IPprivate String ip;// 本次登录IPprivate Boolean disabled;// 是否可用private String picture;// 头像路径private Set<User> friends;// 好友private Set<User> attentions;// 关注对象private Set<User> blcaklist;// 黑名单// ----------------------Getters and Setters---------------------------////Getters和Setters以及equals与hashCode方法由于太长,在此省略}<?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 package="org.fantasizer.blog.core.entity"><class name="User" table="user_info" lazy="false"><id name="id" column="userid"><generator class="native" /></id><property name="loginname" column="loginname" type="string"length="20" unique="true" not-null="true" /><property name="nickname" column="nickname" type="string"length="20" not-null="true" /><property name="password" column="password" type="string"length="50" not-null="true" /><property name="email" column="email" type="string" length="50"not-null="true" unique="true" /><property name="birthdate" column="birthdate" type="date" /><property name="gender" column="gender" type="string" length="6" /><property name="marriage" column="marriage" type="string"length="6" /><property name="msn" column="msn" type="string" length="50" /><property name="qq" column="qq" type="string" length="50" /><property name="phone" column="phone" type="string" length="15" /><property name="realname" column="realname" type="string"length="50" /><property name="country" column="country" type="string"length="50" /><property name="address" column="address" type="string"length="100" /><property name="birthplace" column="birthplace" type="string"length="100" /><property name="schoolname" column="schoolname" type="string"length="50" /><property name="strongSuit" column="strongSuit" type="string"length="200" /><property name="personalSign" column="personalSign" type="string"length="200" /><property name="lastLoginTime" column="lastLoginTime" type="timestamp" /><property name="lastLogoutTime" column="lastLogoutTime" type="timestamp" /><property name="registerTime" column="registerTime" type="timestamp" /><property name="loginTime" column="loginTime" type="timestamp" /><property name="loginCount" column="loginCount" type="java.lang.Integer" /><property name="lastIp" column="lastIp" type="string" length="15" /><property name="ip" column="ip" type="string" length="15" /><property name="disabled" column="disabled" type="boolean" /><property name="picture" column="picture" type="string"length="100" /><set name="friends" inverse="true" table="user_friends" lazy="false"><key column="userid" /><many-to-many class="User" column="friendid" /></set><set name="attentions" inverse="true" table="User_attentions"><key column="userid" /><many-to-many class="User" column="attentionid" /></set><set name="blcaklist" inverse="true" table="user_blacklist"><key column="userid" /><many-to-many class="User" column="blcaklistid" /></set></class></hibernate-mapping>另外补充一下,使用Hibernate的时候,想UserRelationship这样的类能不能当成实体?即表达的不是独立的实体,而是表示实体与实体之间关系的,谢谢各位~ 问题补充txc_tang 写道
解决方案
帮你写了一个Annotation的实体类,映射关系劳烦你自己转换下,希望对你有用,呵呵
解决方案二:
再次帮你看了下,你的好像也没写错,会生成三个关系表。如果你只想生成一个表,那表结构就有点不太合理,呵呵。