2016-06-30 122 views
0

實體類1com.microsoft.sqlserver.jdbc.SQLServerException:無效的列名 'XXX'

 @Entity 
     @Table(name = "TICKETS") 
     public class Ticket { 

     .... 

     @Column(name = "MERCHANT_NBR") 
     private String merchant_nbr; 

     @ManyToOne(fetch = FetchType.LAZY) 
     @JoinColumn(name = "merchant_nbr", nullable = false) 
     private Merchant merchant; 

    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name ="merchantNBR", nullable = false) 
    private merchantDetails merchantDetails; 

實體類2

@Entity 
    @Table(name="MERCHANT_DETAILS") 
    public class merchantDetails { 

    @Id 
    @Column(name="MERCHANT_NBR") 
    private String merchantNBR; 

    @OneToMany(fetch = FetchType.LAZY) 
    private Set<Ticket> ticket; 

錯誤的捐贈......無效列 'merchantNBR'但我有這個名字的專欄。

com.microsoft.sqlserver.jdbc.SQLServerException: Invalid column name 'merchantNBR'. 
+0

列名稱爲MERCHANT_NBR,而不是merchantNBR,因爲它在您的休眠註釋中顯示 – PacMan

+0

感謝您的回覆。當我改變它時,它給出了這個: 「實體映射中的重複列:com.triton.model.Ticket列:merchant_nbr」。不休眠允許映射到一列中的兩個不同的表? – Rishi

+0

您是否在使用該列連接兩個實體 – PacMan

回答

1

所以它是連接列不列,併爲您必須使用正確標註用於連接兩個實體是@JoinColumn 看到這一點,可能會有所幫助

@joinColumn(name = "MERCHANT_NBR" ,referencedColumnName="merchantNBR") 
     private String merchant_nbr; 

在這裏,我假設您已將實體類2中的列名更改爲

@Column(name="MERCHANT_NBR") to `@Column(name="merchantNBR")` 
+0

我做了這個改變。但它仍然給我錯誤'重複欄的映射實體的票務列merchant_nbr ...' – Rishi

+0

你確定他們有一個不同的名字? – PacMan

+0

如果我在列名中犯了錯誤,讓我更改名稱並再次檢查。我認爲是這種情況。謝謝你的回覆! – Rishi