1

インタビューとコメントの 2 つのエンティティがあります。Interview は Comment と 1 対多の一方向の関係にあります。

コメント用の yaml マッピング ファイルは次のとおりです。

Entities\Comment:
  type: entity
  table: Comment
  repositoryClass: Repositories\CommentRepository

  fields:
    id:
      type: integer
      id: true
      generator:
        strategy: AUTO
    parentid:
      type: integer
      nullable: false
      column: parentid
    isactive:
      type: integer
      nullable: false
      column: isactive
    isremoved:
      type: integer
      nullable: false
      column: isremoved
    removaldate:
      type: datetime
      nullable: true
      column: removaldate
    user_name:
      type: string
      length: 255
      nullable: false
      column: user_name
    user_email:
      type: string
      length: 255
      nullable: false
      column: user_email
    user_avatar:
      type: string
      length: 255
      nullable: false
      column: user_avatar
    comment:
      type: text
      nullable: false
      column: comment
    creationdate:
      type: datetime
      nullable: false
      column: creationdate
    rating:
      type: integer
      nullable: false

インタビュー用の yaml マッピング ファイルは次のとおりです。

Entities\Interview:
  type: entity
  table: Interview
  repositoryClass: Repositories\InterviewRepository

  fields:
    id:
      type: integer
      id: true
      generator:
        strategy: AUTO
    isremoved:
      type: integer
      nullable: false
      column: isremoved
    removaldate:
      type: datetime
      nullable: true
      column: removaldate
    creationdate:
      type: datetime
      nullable: false
      column: creationdate
    rating:
      type: integer
      nullable: false
    anonstitle:
      type: string
      length: 1000
      nullable: false
      column: anonstitle
    anons:
      type: text
      nullable: false
      column: anons
    anonsphoto:
      type: string
      length: 255
      nullable: true
      column: anonsphoto
    interviewtitle:
      type: string
      length: 1000
      nullable: false
      column: interviewtitle
    interview:
      type: text
      nullable: true
      column: interview
    interviewphoto:
      type: string
      length: 255
      nullable: true
      column: interviewphoto
  manyToMany:
    comments:
      targetEntity: Comment
      joinTable:
        name: interviews_comments
        joinColumns:
          interview_id:
            referencedColumnName: id
        inverseJoinColumns:
          comment_id:
            referencedColumnName: id
            unique: true

したがって、スキーマをデータベースにロードした後、3 つのテーブルがあります。そのうちの 2 つはエンティティのテーブルで、1 つは関係用で、interview_id、comment_id の 2 つの列しかありません。しかし、一部のインタビューのコメント オブジェクトを永続化した後、結合テーブルに何も表示されません。理由がわかりません。

4

1 に答える 1

0

Interview は Comment と 1 対多の一方向の関係にあります。

いいえ、所有側で一方向ではなく、この関係をmanyToManyのように定義したためです。Entities\InterviewoneToMany

ManyToManyマッピングには結合テーブルが必要です。人Interviewは多くを持つことができComment、人は多くを持つことができるからです。この問題は、データベース テーブルに属性を追加しても解決できないため、追加のマッピング テーブルが作成されます。CommentInterview

解決策: 1 つInterviewが多数Commentあり、1 つCommentが 1 つInterviewある場合は、yaml のマッピングEntities\InterviewoneToManyなしに修正する必要がjoinTableあります (定義したとおりに作成されます)。

于 2013-03-23T16:16:46.050 に答える