【发布时间】:2015-05-25 13:18:12
【问题描述】:
我在使用休眠注释时遇到了一些问题。我这里有一些方案:
表feature_map
-
module_name(PK) (FKm_module_fk) -
feature_code(PK) (FKm_feature_fk)
表格模块
-
module_name(PK)
表格功能
-
feature_code(PK)
我已经从休眠和其他网站尝试了几种方法,但没有成功。 有谁能帮帮我吗?
已编辑
对不起,我没有告诉你所有的代码。我的意思是,我请您帮助使用您自己的代码将其生成为休眠注释代码。对不起,这是我的错误。我有一个正确的,我昨晚找到了。 CMIIW。
下面是我的代码:
FeatureMap.class
@Entity
@Table(name = "M_FEATURE_MAP")
@IdClass(FeatureMapPk.class)
public class FeatureMap implements Serializable {
@Id
@Column(name = "module_name")
private String moduleName;
@Id
@Column(name = "feature_code")
private String featureCode;
@MapsId("moduleName")
@OneToOne
@JoinColumn(name = "module_name", referencedColumnName = "module_name",
insertable = false, updatable = false)
private Module module;
@MapsId("featureCode")
@OneToOne
@JoinColumn(name = "feature_code", referencedColumnName = "feature_code",
insertable = false, updatable = false)
private Feature feature;
/*Getter Setter, hash equals and toString*/
}
FeatureMapPk.class
public class FeatureMapPk implements Serializable {
private String moduleName;
private String featureCode;
public FeatureMapPk(){
}
public FeatureMapPk(String moduleName, String featureCode){
this.moduleName = moduleName;
this.featureCode = featureCode;
}
/*Getter Setter, hash equals and toString*/
}
模块类
@Entity
@Table(name = "M_MODULE")
public class Module implements Serializable {
@Id
@Column(name = "module_name")
private String moduleName;
@JsonIgnore
@OneToOne(fetch = FetchType.LAZY, mappedBy = "module")
private FeatureMap featureMap;
/*Getter Setter, hash equals and toString*/
}
Feature.class
@Entity
@Table(name = "M_FEATURE")
public class Feature implements Serializable {
@Id
@Column(name = "feature_code")
private String featureCode;
@JsonIgnore
@OneToOne(fetch = FetchType.LAZY, mappedBy = "feature")
private FeatureMap featureMap;
/*Getter Setter, hash equals and toString*/
}
非常感谢您的回答:) 在我犯错之前,我很抱歉。
【问题讨论】:
-
您遇到了一些问题,但不要说您尝试了注释的什么用途以及结果如何。不要说“它不起作用”,这应该是什么意思,你希望人们能够从没有信息的情况下告诉你什么?
-
如果您的 FutureMap 除了键和模块/映射的属性之外没有任何其他属性(在您的代码中没有其他属性),那么您根本不需要它。它只是一个连接表,将由 JPA 为您处理。 en.wikibooks.org/wiki/Java_Persistence/… 另外你确定模块和特性之间只有OneToOne(一个模块一个特性,不多),就像你当前的代码一样。
-
是的,感谢@zielu 的建议。我在 FutureMap.class 中有另一个属性。我确定这是一对一的关系。因为futureMap会变成一个实体,而不仅仅是多对多关系生成的表。
标签: java spring hibernate postgresql jpa