有些表没有定义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
分享到:
相关推荐
4. **实体类(Entity)**:在Hibernate中,实体类代表数据库中的表,通过注解如@Entity和@Table来标识,属性对应表的字段,@Id标注主键。 5. **持久化操作**:使用Session进行CRUD操作。例如,save()或saveOrUpdate...
- 可以使用s:iterator标签遍历集合,s:property获取对象属性,以渲染表格或其他UI元素。 7. **示例代码**: ```java // UserDAO.java public interface UserDAO { void addUser(User user); User getUserById...
该表格具有四个字段:`id`、`username`、`password` 和 `age`。其中,`id` 字段是自增长的主键。 2. 创建 Hibernate 项目 接下来,我们创建了一个名为 `HibernateDemo` 的 Java 项目,并添加了 Hibernate 能力。...
Hibernate提供了一种面向对象的查询语言——HQL,类似于SQL,但操作的是对象而不是表格。 总结,Hibernate实体层设计是Java开发中非常重要的一环,理解并熟练掌握实体的定义、属性映射和关联映射,以及如何在实际...
5. **Criteria查询**:除了HQL外,Hibernate还提供了Criteria API,它允许动态构建查询,适合在编程时动态指定查询条件。 6. **二级缓存**:Hibernate 3.2.5支持二级缓存,它可以提高性能,因为频繁访问的数据会被...
3. **查询语言**:Hibernate提供了一种称为HQL(Hibernate Query Language)的面向对象的查询语言,类似于SQL,但操作的是对象而非表格。此外,还有Criteria API,提供了更加灵活的查询方式。 4. **第二级缓存**:...
- **查询语言**:Hibernate Query Language(HQL)是一种面向对象的查询语言,类似SQL,但操作的是对象而不是表格。另外,Criteria API提供了一种更动态的查询方式。 - **缓存机制**:Hibernate支持二级缓存,可以...
9. **查询语言(HQL)**:Hibernate查询语言(HQL)是面向对象的查询语言,类似于SQL,但操作的是对象而不是表格。它支持复杂的查询,如关联查询、分组、排序等。 10. **Criteria查询**:另一种查询方式是Criteria ...
7. **实体类和注解**:在Hibernate 3.5.2中,实体类通常用注解(如@Entity、@Table、@Id等)来标记,这些注解告诉Hibernate如何将类与数据库表关联。此外,@Column、@OneToMany、@ManyToOne等注解用于指定字段属性和...
6. **Inheritance Mapping**:Hibernate支持单表继承(Single Table Inheritance, STI)、联合继承(Joined Table Inheritance, JTI)和表格分片继承(Concrete Table Inheritance, CTI)。`@Inheritance`和`@...
1. **对象关系映射(ORM)基础**:ORM的核心思想是将数据库中的表格映射为Java对象,使得数据库操作可以通过对象的增删改查来实现。Hibernate通过XML或注解的方式定义映射,提供了透明的数据库访问。 2. **配置文件...
HQL是Hibernate提供的面向对象的查询语言,类似于SQL,但操作对象而不是表格。它可以方便地进行复杂的查询,如join、group by、order by等。 9. **Criteria查询**: Criteria API提供了一种动态构建查询的方式,...
9. **继承映射(Inheritance Mapping)**:Hibernate提供了单表继承、联合继承和表格分片等多种策略来处理Java类的继承关系在数据库中的映射。 10. **级联操作(Cascading)**:级联操作允许将一个实体的操作(如...
1. **对象关系映射(ORM)基础**:ORM的核心理念是将数据库中的表格映射为Java对象,Hibernate通过XML或注解配置完成这一映射。这使得开发者可以避免编写大量的SQL语句,提高代码的可读性和可维护性。 2. **实体...
3. **查询语言**:Hibernate支持HQL(Hibernate Query Language),这是一种面向对象的查询语言,类似于SQL,但操作的是对象而非表格。此外,Hibernate还支持Criteria API,提供了一种更面向对象的查询方式。 4. **...
通常,在应用启动时创建SessionFactory,并在每次事务开始时获取Session。 ```java SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory....
它允许我们将数据库中的表格与 Java 类进行映射,从而在 Java 代码中直接操作对象,提高了开发效率和可维护性。 **Hibernate 的主要组件** 1. **Configuration**:配置类,用于设置 Hibernate 的运行环境,包括...
4. **主键(Primary Key)**:每个实体类都有一个主键,通过`@Id`注解来标识,Hibernate支持多种主键生成策略,如`@GeneratedValue`。 5. **持久化类的属性映射**:通过`@Column`注解,可以定义字段与数据库列的...
7. **Hibernate_inheritance**:这部分代码可能涉及了如何在Hibernate中实现对象继承的数据库映射,比如单表继承、联合继承和表格-per-class策略的实例。 学习和理解这些代码,可以帮助开发者更好地掌握Hibernate的...
- **HQL(Hibernate Query Language)**:面向对象的查询语言,类似SQL,但操作对象而非表格。 - **Criteria API**:提供动态构建查询的能力,无需预先编写查询字符串,更安全且可读性强。 6. **缓存机制** ...