如何解决具有单向 OneToMany 关系的 Ebean 在插入期间导致重复列异常
我有一个具有唯一 ID UID 的表 ENTRY。第二个表 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)
时,出现异常
错误执行 DML bindLog[] 错误[[sql0121] 不允许重复名称 PROGRAM_LIST_UID...
跟踪显示插入语句确实指定了两次 program_list_uid
:
insert into program (program_list_uid,program_name,program_list_uid)
values (?,?,?)
我发现使这项工作有效的唯一方法是从 entryId
中删除 Program
。但是,此属性在代码的其他地方使用。
解决方法
解决方案是将 insertable = false,updatable = false
添加到 @Column
上的 entryId
注释。 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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。