gpt4 book ai didi

java - 如何使用接口(interface)和 JPA

转载 作者:太空狗 更新时间:2023-10-29 22:34:43 25 4
gpt4 key购买 nike

首先我要说的是,我对 Java EE 还很陌生,而且我还没有很强的 Java 理论背景。

我无法理解如何在 Java 中将 JPAinterfaces 一起使用。为了说明我发现的难点,我创建了一个非常简单的示例。

如果我有两个简单的接口(interface) PersonPet:

public interface Person
{
public Pet getPet();
public void setPet(Pet pet);
}

public interface Pet
{
public String getName();
}

还有一个实体 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 */

}

如何在 setPet 方法中正确处理我想保持上述两个实体之间关系的情况?

我想使用接口(interface)的主要原因是因为我想保持模块/层之间对公共(public)接口(interface)的依赖性。我还能如何避免从例如获得依赖性我的 ManagedBean 直接到一个实体?

如果有人建议不要在实体上使用接口(interface),那么请解释有哪些替代方法或模式。

最佳答案

您可以使用 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;
}
}

关于java - 如何使用接口(interface)和 JPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8964799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com