2012-07-05 45 views
1

我想获取三个pojos,并使用Hibernate的能力在我的数据库中生成匹配它们的表。这些课程是电影,评分和评级。这是电影。 Rater实际上是一样的东西,因为它也有连接到它的评级列表。我对嵌入式ID使用哪些注释?

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值的关键字?这似乎是我想使用“创建”值,但阅读更多的说它会导致Hibernate清空预先存在的表。我读过对吗? 谢谢。

回答

0

关于hbm2ddl的关键字,“更新”:更新模式,“创建”:创建模式,销毁以前的数据。所以,我猜“更新”是你正在寻找的关键字。

来到应该用来设置嵌入ID的注释,它是“@EmbeddedID”。它在主键本身需要成为嵌入式对象时使用。你是什​​么意思“使用这个嵌入式ID设置需要什么特殊的注释?”

+0

这几乎是答案。我不确定是否必须为内部ID做任何特别的注释。 – user1281598 2012-07-09 12:20:32

+0

你试过实施它吗?该注释应该完美地工作。 – 2012-07-09 23:55:13

+0

我所拥有的是带注释的pojos。我没有看到任何变化。我猜我必须在Hibernate改变任何东西之前尝试添加数据? – user1281598 2012-07-10 14:58:54