Hibernate映射OneToOne没有列和非主键

时间:2015-04-16 06:36:53

标签: 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;
}

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”进入Process表,我不希望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模式由外部软件生成

0 个答案:

没有答案