我在db中有两个表,一个拥有另一个的外键,fllowing是架构:
// table featureInfo
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for featureinfo
-- ----------------------------
DROP TABLE IF EXISTS `featureinfo`;
CREATE TABLE `featureinfo` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`globalId` int(11) NOT NULL DEFAULT '0',
`name` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`Id`),
KEY `globalId` (`globalId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
//另一个表featurefix
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for featurefix
-- ----------------------------
DROP TABLE IF EXISTS `featurefix`;
CREATE TABLE `featurefix` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`globalId` int(11) NOT NULL DEFAULT '0',
`modifyname` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`Id`),
KEY `FK-Guid` (`globalId`),
CONSTRAINT `FK-Guid` FOREIGN KEY (`globalId`) REFERENCES `featureinfo` (`globalId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
然后我使用hbm2java创建入口类:
public class Featureinfo implements java.io.Serializable {
private Integer id;
private int globalId;
private String name;
private Set featurefixes = new HashSet(0);
public Featureinfo() {}
}
现在我想知道为什么FeatureInfo中有set属性?
Featureinfo.hbm.xml:
<hibernate-mapping>
<class name="com.pojo.Featureinfo" table="featureinfo" catalog="hibernateset">
<id name="id" type="java.lang.Integer">
<column name="Id" />
<generator class="identity" />
</id>
<property name="globalId" type="int">
<column name="globalId" not-null="true" />
</property>
<property name="name" type="string">
<column name="name" not-null="true" />
</property>
<set name="featurefixes" inverse="true">
<key>
<column name="globalId" not-null="true" />
</key>
<one-to-many class="com.pojo.Featurefix" />
</set>
</class>
</hibernate-mapping>
set元素是定义的,为什么不使用“joined-subclass”呢?
映射xml文件中的“set / map / list / idbag”和“one-to-many / many-to-one”有什么区别?
答案 0 :(得分:0)
hbm2java将FeatureFix中的外键解释为FeatureInfo。这是它的自然交织。在简单阅读数据库时,FeatureInfo和FeatureFix之间存在一对多的关系,因此hbm2java会像这样呈现类。
hbm2java使用集合,因为这是最简单的映射解决方案,因此是默认值。
hbm2java无法区分连接子类结构和数据库级别的简单一对多结构之间的区别,因为它们呈现的相同,因此它与典型的一对一:一对多。连接子类的使用不如一对多。