java - JPA 在需要类型转换的字段上定义关系

标签 java jpa types relationship

我想在“供应商”列上连接两个表, 在发票表中,供应商类型为整数,在供应商表中,供应商类型为 varchar(10)。

有没有可能做一个类型转换,也有关系?

@Entity
public class Vendor
{
    private String id;

    @Id(Column="vendor")
    public String getId(){ ... }
}

@Entity
public class Invoice
{
    private Vendor vendor;

    @One-to-one
    public Vendor getVendor() { ... }
}

最佳答案

据我所知,使用数据透视表(就像您用来表示多对多关系一样)是正确的方法。

像这样的东西应该可以工作:

@Entity
public class Invoice
{
    @JoinTable(name = "invoice_vendor", joinColumns = {
        @JoinColumn(name = "invoice", referencedColumnName = "vendor_id")}, inverseJoinColumns = {
        @JoinColumn(name = "vendor", referencedColumnName = "id")})
    @OneToOne
    private Vendor vendor;
}

invoice_vendor 表在 id 列中包含整数 id,在 vendor_id 列中包含 varchar 引用。

此外,我推测您希望供应商之间存在 ManyToOne 关系,但您写的是一对一,所以我就这样保留了。

关于java - JPA 在需要类型转换的字段上定义关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4280343/

相关文章:

java - 当我拆分方法时,Spring AOP 没有被应用

java - 帮助 objective c - java byte shift

java - 查询用户时 JPA 潜在的性能问题

c# - Type.GetInterface 返回 null

java - Map.Entry<?,?> 作为对象返回 [Bukkit 插件加载器,AddonDescriptionFile]

java - 如何使用 JPA - EntityGraph 只加载实体@Basic 属性的一个子集?

java - 合并许多 application.properties 文件而不是在 Spring Boot 上替换?

generics - 在 Scala 中创建参数图类型

types - SML 算术函数的类型被推断为 int

java - 无法在 Linux 上启动 Selenium session : in Junit 3. 8.2 测试和 selenium 3.4