2013-10-01 36 views
1

我有兩個班級名爲Banneers和BannerGroup。JPA:選擇查詢在ManyToOne協會期間不工作

我想創建一個關係船ManyToOne

在我的情況下,許多橫幅可以有一個相同的橫幅組。

MySQL表是...

mysql> desc Banners; 
+------------------+--------------+------+-----+---------+-----------------------------+ 
| Field   | Type   | Null | Key | Default | Extra      | 
+------------------+--------------+------+-----+---------+-----------------------------+ 
| banner_id  | int(11)  | NO | PRI | NULL | auto_increment    | 
| banner_name  | varchar(255) | YES |  | NULL |        | 
| banner_group_id | int(11)  | YES | MUL | NULL |        | 
+------------------+--------------+------+-----+---------+-----------------------------+ 



mysql> desc Banner_Group; 
+---------------------+--------------+------+-----+----------------+-----------------------------+ 
| Field    | Type   | Null | Key | Default  | Extra      | 
+---------------------+--------------+------+-----+----------------+-----------------------------+ 
| group_id   | int(11)  | NO | PRI | NULL   | auto_increment    | 
| group_name   | varchar(255) | NO | MUL | NULL   |        | 
+---------------------+--------------+------+-----+----------------+-----------------------------+ 

我的模型類是這樣的......

Class Banners 
{ 
    private Integer bannerId; 
    private String bannerName; 
    private Integer bannerGroupId; 
    private BannerGroup bannerGroupDO; 

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    @Column(name = "banner_id") 
    public Integer getBannerId() { 
     return bannerId; 
    } 

    public void setBannerId(Integer bannerId) { 
     this.bannerId = bannerId; 
    } 

    @Column(name = "banner_name") 
    public String getBannerName() { 
     return bannerName; 
    } 

    public void setBannerName(String bannerName) { 
     this.bannerName = bannerName; 
    } 

    @Column(name = "banner_group_id") 
    public Integer getBannerGroupId() { 
     return bannerGroupId; 
    } 

    public void setBannerGroupId(Integer bannerGroupId) { 
     this.bannerGroupId = bannerGroupId; 
    } 

    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name = "group_id") 
    public AffiliateBannerGroup getAffiliateBannerGroupDO() { 
     return affiliateBannerGroupDO; 
    } 

    public void setAffiliateBannerGroupDO(
      AffiliateBannerGroup affiliateBannerGroupDO) { 
     this.affiliateBannerGroupDO = affiliateBannerGroupDO; 
    } 
} 

Class BannerGroup{ 

    private int group_id; 
    private int group_name; 

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    @Column(name = "group_id") 
    public Integer getGroupId() { 
     return groupId; 
    } 

    public void setGroupId(Integer groupId) { 
     this.groupId = groupId; 
    } 

    @Column(name = "group_name") 
    public String getGroupName() { 
     return groupName; 
    } 

    public void setGroupName(String groupName) { 
     this.groupName = groupName; 
    } 
} 

現在,當我試圖做到這一點...

Query q = session.createQuery("from com.abc.xyz.model.Banners "); 
List<Banners> bannerDisplayList = q.list(); 

它給了我下面的例外...

Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column 'b0_.group_id' in 'field list'. 

,當我看到我的GENRAL查詢日誌,它給了我這個...

131001 9:42:51 230 Query  select b0_.banner_id as banner1_247_, b0_.group_id as group25_247_, b0_.banner_group_id as banner3_247_, b0_.banner_name as banner2_247_ from Banners b0_ 
        230 Query  SHOW FULL TABLES FROM `mydb` LIKE 'PROBABLYNOT' 
        230 Query  rollback 
        230 Query  SET autocommit=1 

這意味着@JoinColumn未在此多對一關係的工作。

我的代碼錯了嗎? 這裏有什麼問題?

回答

2

爲什麼你有bannerGroupId和bannerGroupDO?只要有bannerGroupDO和吸氣劑具有

一些東西一樣

@ManyToOne(fetch = FetchType.LAZY) 
@JoinColumn(name = "banner_group_id", nullable = false) 
public Node getBannerGroupDO() { 
    return this.bannerGroupDO; 
} 
+0

哦~~ ....雅我的錯誤。感謝user2310289。你是絕對正確的。 –