当我定义这样的实体对象时:
@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 db中创建。
但是当我删除@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 :(得分:0)
正如任何基本的JPA文档都会告诉你的,如果你有一个@Id
那么id是完全定义的,但是如果你有多个@Id
(即复合id)那么你必须定义一个{ {1}}。我希望JPA实现中的错误消息告诉你,我使用的实现肯定会有例外。
另见http://www.datanucleus.org/products/accessplatform_5_0/jpa/application_identity.html