id键的自定义包装器

时间:2011-09-03 18:40:27

标签: java hibernate domain-driven-design identity

我想在自定义类中包装id。喜欢这个

@Entity
@Table(name = "USERS")
public class User {
    @EmbeddedId
    UserId id;
}
@Embeddable
public class UserId implements Serializable {
    private Long value;
}

value的自动生成UserId中的问题。我应该怎样做才能使@GeneratedValue value可行?

BTW,如果id自动初始化将会很棒。

1 个答案:

答案 0 :(得分:1)

据我所知,Hibernate只为标记为@Id的字段生成值。我找到this帖子,哈代的回答支持这个。

我们尝试过类似的操作并通过预插入监听器进行管理。虽然这是相当复杂和不理想的。您也可能在不同的数据库平台上发现不同的行为。使用Oracle序列意味着您需要分配值pre-insert(Hibernate执行select以获取值然后插入)但是使用MySQL自动递增字段将分配值并且hibernate执行插入以生成自动生成值,然后选择找出值是什么。