1

私は 2 つの単純なエンティティIssueTag、および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;
4

1 に答える 1