У меня есть две таблицы в дБ, и одна владеет внешним ключом от другой, переменная - это схема:
// таблица 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;
// еще одно исправление таблицы
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 определяет, почему бы вместо этого не использовать "join-subclass"?
Кроме того, в чем разница между «set / map / list / idbag» и «one-to-many / many-to-one» в xml-файле отображения?