【问题标题】:jpa annotation can not create tablejpa注解无法创建表
【发布时间】:2016-07-22 00:28:27
【问题描述】:

当我像这样定义实体对象时:

@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;

    ......

}

无法在我的 mysql 数据库中创建表 dau。

但是当我删除一个@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注解的数量有限制吗?

非常感谢!

【问题讨论】:

    标签: hibernate jpa annotations entity


    【解决方案1】:

    任何基本的 JPA 文档都会告诉您,如果您有一个 @Id,那么 id 是完全定义的,但是如果您有多个 @Id(即复合 id),那么您必须定义一个 @IdClass。我希望 JPA 实现中的错误消息会告诉您这一点,而我使用的实现肯定会出现异常。

    另见http://www.datanucleus.org/products/accessplatform_5_0/jpa/application_identity.html

    【讨论】:

    • 没有。第二个例子成功了。它可以创建表
    • 我没有说它不能“创建架构”。我所说的是你需要@IdClass 才能使用 JPA。您将进入运行时并按原样失败。
    猜你喜欢
    • 2018-05-11
    • 2012-05-31
    • 2019-02-03
    • 1970-01-01
    • 2022-01-17
    • 2018-05-22
    • 1970-01-01
    • 2018-03-15
    相关资源
    最近更新 更多