2011-04-06 162 views
0

我在eclipse中使用JPA功能「從實體生成表」時出現問題。 我設法爲我的項目完成所有的ORM映射,但只有一個導致我陷入困境。使用JPA工具的對象關係映射:從實體生成表功能

控制檯這樣說:

內部異常:java.sql.SQLSyntaxErrorException: 'OFFER_ID' 不是表或VTI '註釋' 一欄。 錯誤代碼:-1

這是表應該怎麼看起來像一個形象:

enter image description here

-One報價有很多評論

-One評論屬於one Offer ...

這是實體如何看起來像: 實體評論:

@Entity 
public class Comment { 
// Attributes 
@Id 
@GeneratedValue 
@Column(nullable = false) 
private Long id; 
     ... 
@ManyToOne 
@JoinColumn(name = "OFFER_ID", nullable = false) 
private Offer offer;// One comment must belong to one offer 
...Getters and setters 

實體發售:

@Entity 
public class Offer { 
    //...Other attributes 

    @OneToMany(mappedBy = "offer") 
private List<Coupon> coupons;//One offer can have many coupons 

@OneToMany(mappedBy = "offer") 
private List<Comment> comments; //One offer can have many comments 

    ... getters and setters 

在故意類要約我粘貼與其他類的類報價有關係的所謂優惠券,正如你所看到的,它與提供課堂評論的優惠券完全一樣。

那麼問題是什麼?

爲什麼一個關係被映射和其他沒有?

爲什麼數據庫COMMENT中新創建的表沒有名爲OFFER_ID的列?

我該如何解決?

回答

1

我相信,該行

@JoinColumn(name = "OFFER_ID", nullable = false) 

使你的麻煩。因爲您在報價表中確實沒有列OFFER_ID。

爲了解決這個問題,一個id字段添加到您的發售實體:

@Id(columnName = "OFFER_ID") 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
private long id; 

我可能是錯的語法...

+0

優惠已經有一個ID。但我會嘗試與列名 – sfrj 2011-04-06 14:32:40

+0

沒有它沒有工作,問題必須在其他地方 – sfrj 2011-04-06 15:00:50

0

可能是你在persistence.xml中需要<property name="hibernate.hbm2ddl.auto" value="update"/>