一尘不染

如何在hbm中做多列UniqueConstraint?

hibernate

处理一些传统的hibernate代码。

如何使用hbm.xml(hibernate映射文件)而不是注释执行以下操作?

@Table(name="users", uniqueConstraints = {
    @UniqueConstraint(columnNames={"username", "client"}),
    @UniqueConstraint(columnNames={"email", "client"})
})
public class User implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    private int id;
    private String username;
    private String email;
    private Client client;
}

阅读 300

收藏
2020-06-20

共1个答案

一尘不染

使用properties标签:

...
<properties name="uk1" unique="true">
        <property name="username" .../>
        <many-to-one name="client" .../>
</properties>

<properties name="uk2" unique="true">
        <property name="email" .../>
        <many-to-one name="client" update="false" insert="false" .../>
</properties>
...

文档摘录:

元素允许定义类的属性的命名逻辑分组。构造最重要的用途是它允许属性的组合成为属性引用的目标。这也是定义多列唯一约束的便捷方法。

所有可用的选项在Hibernate文档中进行了描述。

2020-06-20