で動作するようにどのように私は、私は、Java EEにかなり新しいだということを、私はまだJavaで強力な理論的背景を持っていないことを言ってから始める必要があります。インタフェースおよびJPA
私はJavaでinterfaces
とともにJPA
の使用方法を把握し、トラブルを抱えています。私が何を見つけるのかを説明するために、私は非常に簡単な例を作りました。
私は2つのシンプルなインターフェースPerson
と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 */
}
:
public interface Person
{
public Pet getPet();
public void setPet(Pet pet);
}
public interface Pet
{
public String getName();
}
そしてPerson
を実装エンティティPersonEntity
などPet
実装PetEntity
を上記の2つのエンティティ間の関係を維持したいと思っているsetPet
メソッドのケース?
私はパブリック・インタフェースにモジュール/層の間の依存関係を維持したいので、私はインターフェイスを使用する主な理由です。どうすれば他の人に依存するのを避けることができますか?私のManagedBeanをEntityに直接渡しますか?誰かが実体上のインターフェイスを使用しないことをお勧めします場合は
、その後、代替の方法やパターンがあるかを説明してください。
あなたはそれが動作しますか?暗黙のフィールドアクセスを使用していますが、セッターに '@ OneToOne'アノテーションを設定しています。さらに、プロパティへのアクセスがあっても、このアノテーションは機能しますか?セッターではなくゲッターでなければならない? –
Mairbek、フィールドnaプロパティへのアクセスはどうしたらいいですか?この場合、JPA 2.0仕様のこの部分が関連していると思いますか?*「アクセス注釈を明示的に指定しなくても、エンティティ階層内のフィールドとプロパティに注釈の配置を混在させるアプリケーションの動作は未定義です。 –
もちろん、Personの実装が1つしかない限り動作します。 1より大きい値を持つときは、インタフェースフィールドの実装で明示的なサポートが必要です – user383680