2016-06-30 90 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