ManyToOne关系,其中两列串联引用一个列

时间:2019-06-20 07:37:43

标签: java sql jpa hibernate-mapping

我正在尝试在两个实体之间创建ManyToOne关系。表格看起来像这样:


Table:EQUIPMENT
----------------
ID (Integer PK)    
FIXTURE_NO(Varchar 16)

Table:FIXTURE
----------------
ID(Integer PK)
TNO(Varchar 4)
DNO(Varchar 12)

在创建实体时,我想创建一个夹具对位= tNo + dNo(这两个值的串联)的多对一关系。

这是我模型的代码示例:

    @Entity
    @Table(name="EQUIPMENT", schema="EQP")
    public class Equipment {

        @Id
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        @NotNull
        @Column(unique=true)
        private int id;

        @NotNull
        @ManyToOne
        @JoinColumn(name="FIXTURE_NO")
        private Fixture fixture;

        //getters and setters etc...
    }

    @Entity
    @Table(name="FIXTURE", schema="FIX")
    public class Fixture {

        @Id
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        @NotNull
        @Column(unique=true)
        private int id;

        @Size(max=4)
        @Column(name="TNO")
        private String tNo;

        @Size(max=12)
        @Column(name="DNO")
        private String dNo;

        //getters and setters etc...
    }

现在,我看到ManyToOne映射与带有FIXTURE.ID的EQUIPMENT.FIXTURE_NO有关,但是我找不到一种方法来映射带有FIXTURE_NO的TNO和DNO的串联。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

它不能与串联一起使用,但是如果您将数据模型更改为:

.sparkStaging/

您可以添加这样的关系:

Table:EQUIPMENT
----------------
ID (Integer PK)    
TNO(Varchar 4)
DNO(Varchar 12)

Table:FIXTURE
----------------
ID(Integer PK)
TNO(Varchar 4)
DNO(Varchar 12)