我试图通过manytomany连接两个表时出现此错误: ERROR [org.hibernate.tool.hbm2ddl.SchemaUpdate] Unsuccessful:alter table PARAM_TRENDVALUE add constraint FK_TrendValue foreign key(AreaID,PcID, DeviceID,ValueID)引用usrIFDBMaster.tblTrdProcessValues 08:44:43,800错误[org.hibernate.tool.hbm2ddl.SchemaUpdate] Die'usrIFDBMaster.tblTrdProcessValues.DeviceID'-Spalte hat nicht denselben Datentyp wie die verweisende'PARAM_TRENDVALUE.PcID'-Spalte im'FK_TrendValue'-Fremdschlüssel。hibernate注解错误映射
Principaly hibernate试图映射错误的列。
Param.java:
这是关键的:
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = "pcId", column = @Column(name = "PcID", nullable = false)),
@AttributeOverride(name = "unitId", column = @Column(name = "UnitID", nullable = false)),
@AttributeOverride(name = "paramId", column = @Column(name = "ParamID", nullable = false)) })
public ParamId getId() {
return this.id;
}
这是映射:
/**
* @return the connection
*/
@ManyToMany
@ForeignKey(name = "FK_Param")
@JoinTable(
name="PARAM_TRENDVALUE",
inverseJoinColumns={
@JoinColumn(name = "PcID", referencedColumnName = "PcID"),
@JoinColumn(name = "AreaID", referencedColumnName = "AreaID"),
@JoinColumn(name = "DeviceID", referencedColumnName = "DeviceID"),
@JoinColumn(name = "ValueID", referencedColumnName = "ValueID")
}
)
public List<TrendValue> getTrendValues() {
return trendValues;
}
Trendvalue.java:
这是关键的:
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = "pcId", column = @Column(name = "PcID", nullable = false)),
@AttributeOverride(name = "areaId", column = @Column(name = "AreaID", nullable = false)),
@AttributeOverride(name = "deviceId", column = @Column(name = "DeviceID", nullable = false)),
@AttributeOverride(name = "valueId", column = @Column(name = "ValueID", nullable = false))
})
public TrendValueId getId() {
return this.id;
}
这是映射:
/**
* @return the params
*/
@ManyToMany(
mappedBy="trendValues",
targetEntity=Param.class
)
@ForeignKey(name = "FK_TrendValue")
public List<Param> getParams() {
return params;
}
It's第一多对多我尝试使用,它应该工作,我已经尝试过没有inversejoincolumns,与joincolumns,正是在定义“joincolumns表和数据类型/ inversejoincolumns“,... 不知道还有什么可能是问题。
谢谢你的回答,试过了,但没有改变我的问题,同样的错误。我查了一下hibernate试图做的数据库连接,他试图将AreaID与AreaID =>正确,DeviceID与PcID =>不正确,ValueID与DeviceID =>不正确,PcID与ValueID =>不正确 – Charles 2012-02-06 08:16:16
性别歧视评论:I很高兴这是一个ManyToMany而不是OneToMany :-) – 2014-10-08 12:17:02