@Entity
public class Fighter {
private Integer id;
private AirLine line;
private String fName;
@Id @GeneratedValue
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@ManyToOne(optional=false)
@JoinColumns(")})
public AirLine getLine() {
return line;
}
public void setLine(AirLine line) {
this.line = line;
}
public String getfName() {
return fName;
}
public void setfName(String fName) {
this.fName = fName;
}
}
@Embeddable
public class AirLinePK implements Serializable{
private String startcity;
private String endcity;
public String getStartcity() {
return startcity;
}
public void setStartcity(String startcity) {
this.startcity = startcity;
}
public String getEndcity() {
return endcity;
}
public void setEndcity(String endcity) {
this.endcity = endcity;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((endcity == null) ? 0 : endcity.hashCode());
result = prime * result + ((startcity == null) ? 0 : startcity.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
AirLinePK other = (AirLinePK) obj;
if (endcity == null) {
if (other.endcity != null)
return false;
} else if (!endcity.equals(other.endcity))
return false;
if (startcity == null) {
if (other.startcity != null)
return false;
} else if (!startcity.equals(other.startcity))
return false;
return true;
}
}
@Entity
public class AirLine {
private AirLinePK id;
private String name;
private Set<Fighter> fighters = new HashSet<Fighter>();
@OneToMany(cascade=CascadeType.ALL)
public Set<Fighter> getFighters() {
return fighters;
}
public void setFighters(Set<Fighter> fighters) {
this.fighters = fighters;
}
@EmbeddedId
public AirLinePK getId() {
return id;
}
public void setId(AirLinePK id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
分享到:
相关推荐
为了实现复合主键,需要编写一个复合主键类(CompositePrimaryKeyClass),并遵循以下规则: - **复合主键类要求**: - 必须实现`Serializable`接口。 - 提供一个无参数构造函数。 - 实现所有必要的属性和方法,...
### EJB中的注释知识点详解 #### 一、EJB注解概述 EJB(Enterprise JavaBeans)是一种Java EE服务器端应用模型,用于构建可移植的企业级应用。EJB 3.0引入了大量的注解(annotation),使得开发变得更加简单直观。...
源代码可能涉及如何在EJB实体bean中定义和处理复合主键。 7. **EmbeddedEJB3**:这部分可能涉及到EJB 3.0规范,该规范简化了EJB的使用,减少了XML配置,引入了依赖注入等特性。源码可能展示了如何在EJB 3.0环境中...
EJB3.0支持注解定义复合主键,使得处理多字段主键变得简单。 3. **定时服务** - `TimerService`是EJB3.0的一项功能,允许在应用程序中设置定时任务。通过使用`@Schedule`注解,可以在实体bean或无状态会话bean中...
8. **复合主键(CompositePK)**:在某些情况下,实体Bean可能需要多个字段作为主键,这可以通过定义复合主键类并使用@Embeddable和@IdClass注解来实现。 9. **定时服务(TimerService)**:EJB 3.0提供了一个定时...
6. **实体bean(Entity Beans)**:代表数据库中的持久化对象,EJB3.0中实体bean通过JPA进行管理,可以是无主键的,也可以是基于单个字段的主键或复合主键。 **EJB3.0开发实例:** - **Session Bean**:通过`@...
对于实体Bean的主键和实体标识,EJB支持单主键和复合主键。单主键通常使用`@Id`注解来标记,如果主键由多个属性组成,则使用`@IdClass`或`@EmbeddedId`来定义复合主键。例如: ```java @Entity @Table(name="Hello...
EJB 3.0支持多种主键策略,包括自动生成(@GeneratedValue)、单字段主键、复合主键(@EmbeddedId或@IdClass)等。 5. **关系映射**: EJB 3.0支持多种关系映射,如一对一(@OneToOne)、一对多(@OneToMany)、多...
`CompositePK`类可能包含了这些属性,通过实现`Serializable`接口和`@Embeddable`注解,确保了复合主键的正确序列化和持久化。 3. **定时服务(TimerService)** EJB3.0引入了`TimerService`,使得开发者可以方便...
2. **CompositePK** - 在ejb3.0中,实体bean可以使用复合主键(Composite Key)。`CompositePK`类可能表示这种复合主键的实现,它包含多个字段,每个字段都可能是主键的一部分。 3. **TimerService** - ejb3.0引入...
EJB3.0提供了支持复合主键的机制,使得处理多个属性的唯一标识变得简单。 #### 2.4 `Interceptor` 拦截器是EJB3.0中的另一个强大功能,它们允许在方法调用前后插入自定义逻辑。`Interceptor`示例解释了如何创建...
复合主键要求开发者自定义一个复合主键类。 - **示例**: ```java @Embeddable public class CompositeKey implements Serializable { private String part1; private int part2; // Getter and Setter ...
每个包含复合主键的实体bean需要在主键类上使用`@IdClass`注解。 3. **TimerService**:EJB 3.0引入了定时器服务,允许开发者安排任务在将来某个时间执行。`TimerService`接口提供了创建定时任务的方法,这些任务...
8. **复合主键**:介绍了如何使用复合主键来唯一标识实体Bean。 9. **Web服务**:包括如何创建和调用Web服务,以及使用Java和ASP进行调用的方法。 #### 四、总结 EJB 3.0 的引入标志着企业级Java开发进入了一个新...
这包括实体事件监听器、继承策略、复合主键、多租户支持、级联操作、懒初始化异常等更复杂的概念,这些都是EJB3.0持久化开发手册中会详细讲解的内容。 通过学习《EJB3.0持久化开发手册》,开发者能够掌握如何利用...