Nik*_*rin 19 java jpa interface java-ee java-ee-6
我应该首先说我是Java EE的新手,我还没有扎实的Java理论背景.
我在掌握如何JPA与interfacesJava 一起使用时遇到了麻烦.为了说明我发现的困难,我创建了一个非常简单的例子.
如果我有两个简单的接口Person和Pet:
public interface Person
{
public Pet getPet();
public void setPet(Pet pet);
}
public interface Pet
{
public String getName();
}
Run Code Online (Sandbox Code Playgroud)
而一个实体PersonEntity,它实现Person还有一个PetEntity它实现了Pet:
@Entity
public class PersonEntity implements Person
{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private PetEntity pet;
@Override
public void setPet(Pet pet)
{
/* How do i solve this? */
}
}
@Entity
public class PetEntity implements Pet
{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String name;
/* Getters and Setters omitted */
}
Run Code Online (Sandbox Code Playgroud)
如何setPet在我希望保持上述两个实体之间关系的方法中正确处理案例?
我想使用接口的主要原因是因为我想保持模块/层之间的依赖关系到公共接口.我怎样才能避免从我的ManagedBean直接获取实体的依赖?
如果有人建议不要在实体上使用接口,那么请解释有哪些替代方法或模式.
Mai*_*kov 18
您可以targetEntity在关系注释中使用属性.
@Entity
public class PersonEntity implements Person {
private Long id;
private Pet pet;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Override
@OneToOne(targetEntity = PetEntity.class)
public Pet getPet() {
return pet;
}
public void setPet(Pet pet) {
this.pet = pet;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13472 次 |
| 最近记录: |