具有单向 OneToMany 关系的 Ebean 在插入期间导致重复列异常

Ebean with unidirectional OneToMany relationship causing duplicate column exception during insert

我有一个具有唯一 ID UID 的 table 条目。第二个 table PROGRAM,以 ID 列作为键,PROGRAM_LIST_UID 外键引用 ENTRY 中的 UID。我没有创建名称,这是我要维护的遗留代码。

@Entity(name="entry")
public class Entry {
    @Id
    public int uid;
    
    @OneToMany(cascade = CascadeType.ALL)
    @JoinColumn(name="program_list_uid", referencedColumnName="uid")
    public List<Program> programList;

    ...
}

@Entity(name="program")
public class Program {
    @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    public int id;

    @Column(length=150,name="program_name")
    public String programName;

    @Column(name="program_list_uid")
    public Integer entryId = 0;
}

尝试保存条目 Ebean.save(entry) 时出现异常

ERROR executing DML bindLog[] error[[SQL0121] Duplicate name PROGRAM_LIST_UID not allowed...

跟踪显示插入语句确实有两次指定的program_list_uid

insert into program (program_list_uid, program_name, program_list_uid) 
values (?,?,?)

我发现使这项工作起作用的唯一方法是从 Program 中删除 entryId。但是,此 属性 在代码的其他地方使用。

解决方案是将 insertable = false, updatable = false 添加到 entryId 上的 @Column 注释。 How can I retrieve the foreign key from a JPA ManyToOne mapping without hitting the target table?

@Entity(name="program")
public class Program {
    @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    public int id;

    @Column(length=150,name="program_name")
    public String programName;

    @Column(name="program_list_uid", insertable = false, updatable = false)
    public Integer entryId = 0;
}