私は 2 つの単純なエンティティIssueとTag、およびmany-to-many
それらの間の関係を持っています。この例外を使用して問題を削除する場合を除いて、すべてが機能します。Ebean.delete(Issue.class, id)
javax.persistence.PersistenceException: Query threw SQLException:Unknown column
'issue_id' in 'where clause'
Bind values:[1b7e5955c26b51dex546fca27x13cc54c2531x-7fef, ]
Query was:
select t0.id c0
from tag t0
where issue_id=?
非常に奇妙なことは、生成された SQL が明らかに間違っていることです。issue_id
テーブル内のにアクセスしようとしますtag
が、何もありません。これが Ebean のバグではなく、単なる私のミスであることを願っていますが、それが何であるかはわかりません。
エンティティ Bean (ゲッター/セッターを削除しました) と Ebean によって生成された DDL は次のとおりです。
課題エンティティ
@Entity
public class Issue {
@Id @Column(length=64)
private String id; // <-- I use assigned ids
@Version
private Date timeStamp;
private String title;
private String description;
private String createdBy;
@CreatedTimestamp
private Date createdAt;
private String state;
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(
name="issue_tag",
joinColumns={@JoinColumn(name="issue_id", referencedColumnName="id")},
inverseJoinColumns={@JoinColumn(name="tag_id", referencedColumnName="id")})
private Set<Tag> tags;
}
タグ エンティティ
@Entity
public class Tag {
@Id @Column(length=64)
private String id; // <-- I use assigned ids
@Version
private Date timeStamp;
private String name;
@ManyToMany(mappedBy="tags", cascade=CascadeType.ALL)
private Set<Issue> issues;
}
生成された DDL
create table issue (
id varchar(64) not null,
title varchar(255),
description varchar(255),
created_by varchar(255),
state varchar(255),
time_stamp datetime not null,
created_at datetime not null,
constraint pk_issue primary key (id))
;
create table tag (
id varchar(64) not null,
name varchar(255),
time_stamp datetime not null,
constraint pk_tag primary key (id))
;
create table issue_tag (
issue_id varchar(64) not null,
tag_id varchar(64) not null,
constraint pk_issue_tag primary key (issue_id, tag_id))
;
alter table issue_tag add constraint fk_issue_tag_issue_01 foreign key (issue_id) references issue (id) on delete restrict on update restrict;
alter table issue_tag add constraint fk_issue_tag_tag_02 foreign key (tag_id) references tag (id) on delete restrict on update restrict;