2016-05-30 3 views
2

私のプロジェクトでは、エンティティを監査するためにSpringとMySql(v。5.6.25)で休止状態のEnvers(v。4.3.7)を使用しています。HIbernate Enabled @AuditMappedBy SQLException:パラメータインデックスが範囲外です

これは私の例である:

org.hibernate.exception.GenericJDBCExceptionを:試みは、システムが例外を返す新しいチケットを挿入する

@Audited 
@Entity 
@Table(name = "ticket") 
public class Ticket implements java.io.Serializable { 

    .... 

    private List<Payment> payments = new ArrayList<>(0); 

    .... 

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "ticket") 
    @AuditMappedBy(mappedBy = "ticket") 
    public List<Payment> getPayments() { 
     return this.payments; 
    } 

    public void setPayments(List<Payment> payments) { 
     this.payments= payments; 
    } 
    ... 
} 


@Audited 
@Entity 
@Table(name = "payment") 
public class Payment implements java.io.Serializable { 

    .... 

    private Ticket ticket; 
    private Long ticketId; 


    .... 

    @Column(name = "TICKET_ID", nullable = false) 
    public Long getTicketId() { 
     return ticketId; 
    } 

    public void setTicketId(Long ticketId) { 
     this.ticketId = ticketId; 
    } 

    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name = "TICKET_ID", nullable = false, insertable = false, updatable = false) 
    public Ticket getTicket() { 
     return this.ticket; 
    } 

    public void setTicket(TktTicket ticket) { 
     this.ticket= ticket; 
    } 

    ...... 
} 

挿入できませんでした: を.. ... 原因:java.sql.SQLException:パラメータインデックスが範囲外です(19>パラメータ数18)。

いくつかのアイデアはありますか?

+0

データベースのインデックスにエラーがあり、インデックスを変更して再度挿入しようとすると、幸運 –

+0

申し訳ありませんが、私に例を教えていただけますか?私はあなたのコメントを理解していませんでした。タンク。 –

+0

これをテストしてください。succes ALTER TABLE your_table AUTO_INCREMENT = 20;どのようにあなたのエンティティであなたは持っていますか? –

答えて

0

解決済みです。お支払いクラスに私はチケットへの参照を変更:

旧コード:

@Column(name = "TICKET_ID", nullable = false) 
public Long getTicketId() { 
    return ticketId; 
} 

public void setTicketId(Long ticketId) { 
    this.ticketId = ticketId; 
} 

@ManyToOne(fetch = FetchType.LAZY) 
@JoinColumn(name = "TICKET_ID", nullable = false, insertable = false, updatable = false) 
public Ticket getTicket() { 
    return this.ticket; 
} 

public void setTicket(TktTicket ticket) { 
    this.ticket= ticket; 
} 

新コード:

@Column(name = "TKT_TICKET_ID", nullable = false, insertable = false, updatable = false) 
    public Long getTicketId() { 
     return ticketId; 
    } 

    public void setTicketId(Long ticketId) { 
     this.ticketId = ticketId; 
    } 
    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name = "TKT_TICKET_ID", nullable = false) 
    public TktTicket getTktTicket() { 
     return this.tktTicket; 
    } 

    public void setTktTicket(TktTicket tktTicket) { 
     this.tktTicket = tktTicket; 
    } 

は私が取り除か "挿入可能=偽、= falseを更新可能な" getTktTicketから() getTicketId()に追加されました。これはEnversのバグかもしれません。

関連する問題