2016-04-02 91 views
0

當我定義一個實體對象是這樣的:JPA註釋不能創建表

@Entity 
@Table(name = "dau") 
public class EntityDau implements Serializable { 
    private static final long serialVersionUID = 2L; 

    @Id 
    private String startday; 
    @Id 
    private String endday; 
    @Id 
    private String serverid; 
    @Id 
    private String channelid; 
    @Id 
    private String platformid; 
    private int dau; 

    ...... 

} 

表DAU不能在我的MySQL數據庫創建。

但是當我刪除@Id,這是成功的,就像這樣:

@Entity 
@Table(name = "dau") 
public class EntityDau implements Serializable { 
    private static final long serialVersionUID = 2L; 

    @Id 
    private String startday; 
    @Id 
    private String endday; 
    @Id 
    private String serverid; 
    @Id 
    private String channelid; 
    private String platformid; 
    private int dau; 

    ...... 

} 

的區別只是一個@id。 JPA/Hibernate中的@id註釋的數量是否有限制?

非常感謝!

回答

0

正如任何基本JPA文檔會告訴你,如果你有一個@Id則ID完全定義,但如果你有多個@Id(即複合ID),那麼你必須定義一個@IdClass。我希望JPA實現中的錯誤消息告訴你,而且我使用的實現當然會與其例外情況一起使用。

另請參閱http://www.datanucleus.org/products/accessplatform_5_0/jpa/application_identity.html

+0

否。第二個示例已成功。它可以創建表 – littzh

+0

我沒有說它不能夠「創建模式」。我所說的是,你需要@IdClass來使用JPA。你將會到達運行時間並以失敗告終。 –

+0

非常感謝 – littzh