通过数据库中的表,用@Entity、@Id、@EmbeddedId这些注解的编写实体类的具体代码;
时间: 2023-06-23 10:09:52 浏览: 175
好的,这里是一个简单的例子:
假设我们有一个学生信息表,表结构如下:
```sql
CREATE TABLE student (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
gender TINYINT NOT NULL,
age INT NOT NULL,
PRIMARY KEY (id)
);
```
我们可以通过以下实体类来映射这个表:
```java
@Entity
@Table(name = "student")
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "gender")
private Integer gender;
@Column(name = "age")
private Integer age;
// getters and setters
}
```
- `@Entity` 注解表示这是一个实体类,需要被 JPA 管理。
- `@Table` 注解表示与之对应的表名。
- `@Id` 注解表示该字段是主键。
- `@GeneratedValue` 注解表示主键的生成策略,这里使用了 `GenerationType.IDENTITY`,表示使用自增长方式生成主键。
- `@Column` 注解表示该字段与表中的哪个列对应。
如果表中有联合主键的情况,可以使用 `@EmbeddedId` 注解。例如,我们有一个成绩表,表结构如下:
```sql
CREATE TABLE score (
student_id INT NOT NULL,
subject VARCHAR(50) NOT NULL,
score INT NOT NULL,
PRIMARY KEY (student_id, subject)
);
```
我们可以通过以下实体类来映射这个表:
```java
@Entity
@Table(name = "score")
public class Score {
@EmbeddedId
private ScoreKey id;
@Column(name = "score")
private Integer score;
// getters and setters
}
@Embeddable
public class ScoreKey implements Serializable {
@Column(name = "student_id")
private Long studentId;
@Column(name = "subject")
private String subject;
// equals and hashCode
}
```
- `@Embeddable` 注解表示这是一个嵌入式对象。
- 嵌入式对象 `ScoreKey` 作为主键,需要使用 `@EmbeddedId` 注解。
- 嵌入式对象中的字段需要使用 `@Column` 注解指定对应的列名。
以上代码只是一个简单的例子,实际使用时可能需要更多的注解和配置,具体可以根据实际情况进行调整。
阅读全文