`

hibernate:表格没有id时

阅读更多

有些表没有定义id或主键,只有一个unique约束,你又无权修表。

但Hibernate说,一定要id,怎么办?

这时,可以把unique约束相关的field定义为id,一个类里,可以有多个@Id 。

这样可以省去写@EmbeddedId的麻烦。


下面是hibernate文档摘录:

http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/

---------------------2.2.3.2.2. Multiple @Id properties

Another, arguably more natural, approach is to place @Id on multiple properties of my entity. This approach is only supported by Hibernate but does not require an extra embeddable component.

@Entity
class Customer implements Serializable {
  @Id @OneToOne
  @JoinColumns({
    @JoinColumn(name="userfirstname_fk", referencedColumnName="firstName"),
    @JoinColumn(name="userlastname_fk", referencedColumnName="lastName")
  })
  User user;
  
  @Id String customerNumber;

  boolean preferredCustomer;
}
 In this case Customer being it's own identifier representation, it must implement Serializable.
------------------------------------------------------------------
守护
守护
  • 大小: 24.2 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Hibernate4.1

    4. **实体类(Entity)**:在Hibernate中,实体类代表数据库中的表,通过注解如@Entity和@Table来标识,属性对应表的字段,@Id标注主键。 5. **持久化操作**:使用Session进行CRUD操作。例如,save()或saveOrUpdate...

    使用hibernate封装方法

    - 可以使用s:iterator标签遍历集合,s:property获取对象属性,以渲染表格或其他UI元素。 7. **示例代码**: ```java // UserDAO.java public interface UserDAO { void addUser(User user); User getUserById...

    hibernate实验

    该表格具有四个字段:`id`、`username`、`password` 和 `age`。其中,`id` 字段是自增长的主键。 2. 创建 Hibernate 项目 接下来,我们创建了一个名为 `HibernateDemo` 的 Java 项目,并添加了 Hibernate 能力。...

    Hibernate实体层设计

    Hibernate提供了一种面向对象的查询语言——HQL,类似于SQL,但操作的是对象而不是表格。 总结,Hibernate实体层设计是Java开发中非常重要的一环,理解并熟练掌握实体的定义、属性映射和关联映射,以及如何在实际...

    Hibernate3.2.5.jar

    5. **Criteria查询**:除了HQL外,Hibernate还提供了Criteria API,它允许动态构建查询,适合在编程时动态指定查询条件。 6. **二级缓存**:Hibernate 3.2.5支持二级缓存,它可以提高性能,因为频繁访问的数据会被...

    hibernate5类包

    3. **查询语言**:Hibernate提供了一种称为HQL(Hibernate Query Language)的面向对象的查询语言,类似于SQL,但操作的是对象而非表格。此外,还有Criteria API,提供了更加灵活的查询方式。 4. **第二级缓存**:...

    hibernate_min_lib_3.5.zip

    - **查询语言**:Hibernate Query Language(HQL)是一种面向对象的查询语言,类似SQL,但操作的是对象而不是表格。另外,Criteria API提供了一种更动态的查询方式。 - **缓存机制**:Hibernate支持二级缓存,可以...

    Hibernate思维导图

    9. **查询语言(HQL)**:Hibernate查询语言(HQL)是面向对象的查询语言,类似于SQL,但操作的是对象而不是表格。它支持复杂的查询,如关联查询、分组、排序等。 10. **Criteria查询**:另一种查询方式是Criteria ...

    Hibernate 3.5.2 中文API

    7. **实体类和注解**:在Hibernate 3.5.2中,实体类通常用注解(如@Entity、@Table、@Id等)来标记,这些注解告诉Hibernate如何将类与数据库表关联。此外,@Column、@OneToMany、@ManyToOne等注解用于指定字段属性和...

    java-persistence-with-hibernate:Java Persistence和Hibernate书籍中的代码示例

    6. **Inheritance Mapping**:Hibernate支持单表继承(Single Table Inheritance, STI)、联合继承(Joined Table Inheritance, JTI)和表格分片继承(Concrete Table Inheritance, CTI)。`@Inheritance`和`@...

    Hibernate3.2官方中文参考手册.pdf+Hibernate.pdf(Hibernate的学习资料)

    1. **对象关系映射(ORM)基础**:ORM的核心思想是将数据库中的表格映射为Java对象,使得数据库操作可以通过对象的增删改查来实现。Hibernate通过XML或注解的方式定义映射,提供了透明的数据库访问。 2. **配置文件...

    hibernate知识点总结

    HQL是Hibernate提供的面向对象的查询语言,类似于SQL,但操作对象而不是表格。它可以方便地进行复杂的查询,如join、group by、order by等。 9. **Criteria查询**: Criteria API提供了一种动态构建查询的方式,...

    Hibernate框架

    9. **继承映射(Inheritance Mapping)**:Hibernate提供了单表继承、联合继承和表格分片等多种策略来处理Java类的继承关系在数据库中的映射。 10. **级联操作(Cascading)**:级联操作允许将一个实体的操作(如...

    hibernate5.3.7中文帮助文档 中文PDF版 1.67MB

    1. **对象关系映射(ORM)基础**:ORM的核心理念是将数据库中的表格映射为Java对象,Hibernate通过XML或注解配置完成这一映射。这使得开发者可以避免编写大量的SQL语句,提高代码的可读性和可维护性。 2. **实体...

    hibernate3.0 jar包

    3. **查询语言**:Hibernate支持HQL(Hibernate Query Language),这是一种面向对象的查询语言,类似于SQL,但操作的是对象而非表格。此外,Hibernate还支持Criteria API,提供了一种更面向对象的查询方式。 4. **...

    hibernate入门

    通常,在应用启动时创建SessionFactory,并在每次事务开始时获取Session。 ```java SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory....

    hibernate大纲

    它允许我们将数据库中的表格与 Java 类进行映射,从而在 Java 代码中直接操作对象,提高了开发效率和可维护性。 **Hibernate 的主要组件** 1. **Configuration**:配置类,用于设置 Hibernate 的运行环境,包括...

    hibernate4.1.8包

    4. **主键(Primary Key)**:每个实体类都有一个主键,通过`@Id`注解来标识,Hibernate支持多种主键生成策略,如`@GeneratedValue`。 5. **持久化类的属性映射**:通过`@Column`注解,可以定义字段与数据库列的...

    Hibernate_code

    7. **Hibernate_inheritance**:这部分代码可能涉及了如何在Hibernate中实现对象继承的数据库映射,比如单表继承、联合继承和表格-per-class策略的实例。 学习和理解这些代码,可以帮助开发者更好地掌握Hibernate的...

    hibernate3.3.1的jar包

    - **HQL(Hibernate Query Language)**:面向对象的查询语言,类似SQL,但操作对象而非表格。 - **Criteria API**:提供动态构建查询的能力,无需预先编写查询字符串,更安全且可读性强。 6. **缓存机制** ...

Global site tag (gtag.js) - Google Analytics