0
ForfaitGeneriqueとOffreは、私のエンティティです。これら2つのエンティティは、(私はより多くの情報を追加する必要があれば、ここでのすべてのメソッドを入れていない)persistence.xmlである:このオブジェクトを永続化してもパラメータは維持されません
@Entity
public class ForfaitGenerique implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int idForfait;
@NotNull
private String description = "description";
@NotNull
@OneToMany(cascade = {CascadeType.ALL},fetch = FetchType.LAZY,mappedBy = "forfaitGenerique")
private List<Offre> listeOffre;
@NotNull
@ElementCollection
List<Integer> listeRemontees;
//erreur sur mon intellij mais pas d'erreur en faisant mvn clean install.On verra au test
public ForfaitGenerique() {
}
public void addOffre(Offre o) {
this.listeOffre.add(o);
}
[...]
@Entity
public class Offre implements Serializable {
@NotNull
private AgeEnum age;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@NotNull
private double nbJour;
@Enumerated(EnumType.STRING)
@NotNull
private SaisonEnum saison;
@Enumerated(EnumType.STRING)
@NotNull
private ReductionEnum reduction;
boolean consecutif;
@NotNull
private double prix;
@ManyToOne
private ForfaitGenerique forfaitGenerique;
public Offre() {
}
ここで私はForfaitGeneriqueを保持しようとしているものです。私はそれを維持し、そのIDを介して取得しようとすると(これはnullではなく、良い値を持つようです)、私はForfaitGeneriqueを取得します。これはnullではありませんが、けれども):
databaseAccessオブジェクトがあるのEntityManagerと二つの方法(他の中で)、含まれてい@EJB(name="databaseAccess") protected ForfaitsInterface databaseAccess;
private ForfaitGenerique f;
private Offre offre_f;
[...]
ArrayList<Integer> l = new ArrayList<>();
l.add(1);
l.add(2);
l.add(3);
ForfaitGenerique forf = new ForfaitGenerique();
List<Offre> l_o = new ArrayList<Offre>();
forf.setListeOffre(l_o);
forf.setListeRemontees(l);
Offre o = new Offre(forf,AgeEnum.ADULTE,0.5,SaisonEnum.HAUTE,ReductionEnum.FIDELICIME,true,12.0);
forf.addOffre(o);
databaseAccess.addForfaitGenerique(forf);
int id_f = forf.getIdForfait();
assertNotNull(id_f);
System.out.println("bloublou"+id_f);
f = databaseAccess.getForfaitGenerique(id_f);
assertNotNull(f);
assertNotNull(f.getListeRemontees());//null !!
assertNotNull(f.getListeOffre());//null !!
assertEquals(f,forf);
offre_f = f.getListeOffre().get(0);
:
@Stateless(name="databaseAccess")
public class Forfaits implements ForfaitsInterface {
@PersistenceContext private EntityManager entityManager;
public void addForfaitGenerique(ForfaitGenerique forfaitGenerique) {
entityManager.persist(forfaitGenerique);
System.out.println("contains = "+entityManager.contains(forfaitGenerique));
}
@Override
public void addOffre(Offre o) {
entityManager.persist(o);
}
public ForfaitGenerique getForfaitGenerique(int id_forfait) {
ForfaitGenerique f = entityManager.find(ForfaitGenerique.class,id_forfait);//database.getForfaitFromId(id_forfait);
return f;
}
は私が私のオブジェクトを永続化しようとしていたときに私の問題があると思いますが、しかし、わからない 。どんな助けもありがとうございます。
データベースには何が表示されますか?エンティティはDBに保存されていますか? – ujulu
"find"は私にnot notull ForfaitGeneriqueを与えてくれるので、推測します。検索されたオブジェクトがデータベースにない場合は例外をスローしようとしましたが、例外もありませんでした。私はこのエンティティがデータベースに格納されていると思います。私は問題なく保存され、検索される他のエンティティも持っています。 –
'database_ccess.addForfaitGenerique(forf);'の呼び出しの前と後に 'id_f;'のコンソール出力をポストできますか? – ujulu