誰か私が間違っているところを教えてください。すでに一日を無駄にしていた。hibernate(v 3.5.0 FINAL) が cdl_group_module テーブルに外部キーを作成しないのはなぜですか? 単一の列、つまりid(PK)のみを持つテーブルを作成するだけです。1 対 1 の一方向マッピングが必要です。cdl_group は cdl_module と同じように他のテーブルでも使用されるため、双方向マッピングは使用できません。
以下は私のPOJOです。
public class CDLGroupModule extends AbstractDomainObject {
/**
*
*/
private static final long serialVersionUID = 1L;
private Group group;
private CDLModule cdlModule;
/**
* @return the group
*/
public Group getGroup() {
return group;
}
/**
* @param group
* the group to set
*/
public void setGroup(Group group) {
this.group = group;
}
/**
* @return the cdlModule
*/
public CDLModule getCdlModule() {
return cdlModule;
}
/**
* @param cdlModule
* the cdlModule to set
*/
public void setCdlModule(CDLModule cdlModule) {
this.cdlModule = cdlModule;
}
}
public class Group extends AbstractDomainObject{
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
private String description;
public Group() {
}
public Group(String name, String description) {
this.name = name;
this.description = description;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the description
*/
public String getDescription() {
return description;
}
/**
* @param description the description to set
*/
public void setDescription(String description) {
this.description = description;
}
@Override
public String toString() {
return "[Group : { id : " + id + ", name : " + name + ", description :" + description + " }]";
}
}
public class CDLModule extends AbstractDomainObject {
/**
*
*/
private static final long serialVersionUID = 1L;
private CdlModuleEnum module;
/**
* @return the module
*/
public CdlModuleEnum getModule() {
return module;
}
/**
* @param module
* the module to set
*/
public void setModule(CdlModuleEnum module) {
this.module = module;
}
}
以下は私のhbm.xmlです
<?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="com.qait.cdl.commons.domain">
<class name="CDLGroupModule" table="cdl_group_module">
<id name="id" type="long" column="id">
<generator class="native" />
</id>
<!-- <many-to-one name="group" cascade="all" fetch="join"
lazy="false" class="Group" not-null="true" unique="true"/>
<many-to-one name="cdlModule" cascade="all" fetch="join"
lazy="false" class="CDLModule" not-null="true" unique="true"/> -->
<one-to-one name="group" cascade="all-delete-orphan" fetch="join"
lazy="false" class="Group" />
<one-to-one name="cdlModule" cascade="all-delete-orphan" fetch="join"
lazy="false" class="CDLModule" />
</class>
</hibernate-mapping>
Hibernate はcdl_groupとcdl_moduleテーブルを既に正常に作成しています。私のidプロパティは、すべての POJO が拡張しているAbstractDomainObjectクラスに存在します。1対1のマッピングの代わりにunique=trueを使用して多対1のマッピングを試みた場合、休止状態はテーブルを作成しません。その背後にある理由は何ですか?どんな種類の助けもかなりのものです。私の側からさらに情報が必要かどうかを尋ねることができます.