【问题标题】:What annotations do I use for embedded Ids?我对嵌入式 ID 使用哪些注释?
【发布时间】:2012-07-06 05:36:48
【问题描述】:

我想使用我拥有的三个 pojo,并使用 Hibernate 的能力在我的数据库中生成与它们匹配的表。这些类是电影、评分者和评分。这里是电影。评分者实际上是一回事,因为它还有一个与之相关的评分列表。

public class Movie{    
    @Id
    @GeneratedValue(generator = "IdGenerator", strategy = Generation Type.TABLE)
    @TableGenerator(name = "IdGenerator",
    pkColumnValue = "movieId")
    private long id;
    private String name;
    @OneToMany(mappedBy = "id.rater")
    private List<Rating> ratings;
}

评分有很大不同。我正在使用 EmbeddedId。这是我目前所拥有的。

public class Rating{
    @Embeddable
    public static class RatingId
        {
            @ManyToOne
            @JoinColumn(name = "movieId")
            private Movie movie;
            @ManyToOne
            @JoinColumn(name = "raterId")
            private Rater rater;
        }
    @EmbeddedId
    private RatingId id;
    private String comment;
    private int rating;
    }

所以我问这个:使用这个嵌入式 id 设置需要什么特殊注释?此外,哪个是 hbm2ddl 值的正确关键字?看起来我想使用“create”值,但阅读更多内容说它会导致 Hibernate 清空预先存在的表。我没看错吗? 谢谢。

【问题讨论】:

    标签: hibernate hbm2ddl


    【解决方案1】:

    关于 hbm2ddl 的关键字,“update”:更新架构,“create”:创建架构,销毁以前的数据。所以,我猜“更新”是您要查找的关键字。?

    来到应该用于设置嵌入ID的注释,它是“@EmbeddedID”。当主键本身需要是嵌入对象时使用它。您是什么意思“使用此嵌入式 id 设置需要什么特殊注释?”

    【讨论】:

    • 这就是答案。我不确定是否必须为内部 id 做任何特殊注释。
    • 您尝试实现它了吗?该注释应该可以完美运行。
    • 我只有带有注释的pojo。我没有看到任何改变。我猜我必须在 Hibernate 改变任何东西之前尝试添加数据?
    猜你喜欢
    • 2011-09-29
    • 2014-01-23
    • 2013-07-27
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多