首页 > 解决方案 > 如何在 DB 上使用字段不存在的列进行 OneToOne

问题描述

我有两张桌子。我想加入两者,但它们之间没有联合专栏。为了生成联合列,我在我的cell实体上添加了新字段。字段名称为cityCode,由lac列子字符串索引 1 到 3 创建,然后转换为 int。所以实际上当你检查数据库时你看不到cityCode列。我没有将它存储在数据库中。

我也有city实体,它也有 id 列,它也是名称cityCode。我想用cityCode列连接表。

这是我的 json 列表

我使用下面的代码对不存在的列进行编码。它工作得很好,就像你在我的cell实体 json 上看到的那样。

    @Getter(AccessLevel.NONE)
    @Setter(AccessLevel.NONE)
    @Column(name = "LAC", insertable =  false, updatable = false)
    private Integer cityCode;

    public Integer getCityCode()
    {
        return Integer.parseInt(lac.substring(1,3));
    }

我尝试使用下面的代码会引发错误。

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "cityCode")
    private  City city;

oracle.jdbc.OracleDatabaseException:ORA-00904:“GCELL6900X0_”。“CITY_CODE”:标识符无效

它在 DB 上看起来 CITY_CODE 列,所以我知道它为什么会抛出错误,但我找不到任何解决方案。

标签: javahibernatespring-bootjpa

解决方案


推荐阅读