java - ManyToOne 关系,其中通过两列的串联引用一列

标签 java sql jpa hibernate-mapping

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

<小时/>
Table:EQUIPMENT
----------------
ID (Integer PK)    
FIXTURE_NO(Varchar 16)

Table:FIXTURE
----------------
ID(Integer PK)
TNO(Varchar 4)
DNO(Varchar 12)
<小时/>

在创建实体时,我想创建多对一关系,其中固定装置 No = 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 映射与 EQUIPMENT.FIXTURE_NO 和 FIXTURE.ID 相关,但我找不到将 TNO 和 DNO 的串联与 FIXTURE_NO 映射的方法。

感谢您的帮助!

最佳答案

它不适用于串联,但如果您将数据模型更改为:

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

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

您可以添加如下关系:

@ManyToOne
@JoinColumns({
    @JoinColumn(name="TNO", referencedColumnName="TNO"),
    @JoinColumn(name="DNO", referencedColumnName="DNO")
})
private Fixture fixture;

关于java - ManyToOne 关系,其中通过两列的串联引用一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56681206/

相关文章:

java - 降低 Java 时间和空间复杂性的最佳方法是什么?

java - 使用 hibernate 获取具有实体属性值的物理列值

java - 我们可以使用 selenium Webdriver 访问 ICICI、HDFC、SBI 等银行网站的 Web 元素以实现自动化吗?

java - 获取导致 com.microsoft.sqlserver.jdbc.SQLServerException : String or binary data would be truncated 的列的任何方法

java - JPQL参数类型错误

java - 如何使用 JPQL 获取 blob 字段的长度?

java - 在 OneToMany 关系中保存时,JPA 不清除 Set 迭代器

java - Android使电话号码可点击,自动检测

sql - 查询具有多列的相同查找表

mysql - 从 LEFT JOIN 查询中删除重复项