【发布时间】:2014-06-27 08:55:04
【问题描述】:
Hibernate 不同意这种结构。我错过了什么吗?它引发的错误:
org.hibernate.MappingException:无法在进程中找到具有逻辑名称的列:version_id
关于如何在保持复合键结构的同时修复的任何建议?
数据模型
版本有很多动作
版本有很多进程;
public class Version {
@Id
@Column(name = "id")
public int Id;
}
动作有一个过程
动作只有一个版本
public class Action {
// Action has a composite key (ID and Version ID)
@Id
@Column(name = "id")
public int id;
@Id
@ManyToOne
@JoinColumn(name = "version_id")
public Version version;
@ManyToOne
@JoinColumns({
@JoinColumn(name = "process_id", referencedColumnName = "id"),
@JoinColumn(name = "version_id", referencedColumnName = "version_id")
})
public Process process;
}
进程有很多动作
进程只有一个版本
public class Process {
// Process has a composite key (ID and Version ID)
@Id
@Column(name = "id")
public int id;
@Id
@ManyToOne
@JoinColumn(name = "version_id")
public Version version;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "process", targetEntity = Action.class)
public List<Action> actions= new ArrayList<Action>();
}
【问题讨论】:
-
不允许在
@ManyToOne上指定@Column... -
你的桌子怎么样?
-
好吧,我让hibernate生成它们...但是,它不是因为这个错误...
-
我添加了我想要实现的模型的一部分的图片
-
Action.process 之前有两个
JoinColumn。第二个不需要你。
标签: java hibernate composite-key many-to-one