Java Hibernate映射OneToOne(不带列且在非主键上)
我简化了我的模型,但我的模型如下:Java Hibernate映射OneToOne(不带列且在非主键上),java,oracle,hibernate,h2,Java,Oracle,Hibernate,H2,我简化了我的模型,但我的模型如下: class Process { private int idProcess; } class Step { private int idStep; } class Action { private int idAction; } class Option { private int idOption; private int idObject; private TypeOption type; } enu
class Process {
private int idProcess;
}
class Step {
private int idStep;
}
class Action {
private int idAction;
}
class Option {
private int idOption;
private int idObject;
private TypeOption type;
}
enum typeOption {
PROCESS, STEP, ACTION
}
之所以选择此模型,是因为我们可以选择多种类型,而此字段仅用于添加我们在上一版本软件中忘记的内容。所以你可以选择任何事情
我想在源对象和选项之间添加映射,如:
class Process {
private int idProcess;
@OneToOne
@JoinColumn(?)
private Option option;
}
但是我想要一个sql,比如:
table Process {idProcess}
table Options {idOption, idObject, type}
=>我不希望在进程表中添加列idOption,也不希望Hibernate在idObject上添加外键,因为外键不是idObject而是{idObject,type}
所以我想让hibernate做:
SELECT p.idProcess, o.idOption FROM Process p, Option o WHERE o.idObject = Process.idProcess AND o.type = "PROCESS";
我怎么做
备注:
我在生产中使用Oracle DB,但在测试中使用H2
H2模式是由hibernate为测试自动生成的,但Oracle模式是由外部软件生成的