私はJboss7.1とjpa、ejbを使用しています.OneToMany関係でデータをmysqlデータベースに挿入したいです。
私は二つの実体 personne と voiture を持っています。私は自分のデータベースに人物を保存し、その人物にボアチュールを関連付けたいと考えています。問題は、コードをテスト (テスト) するとpersonne
、データベースに新しいものがvoiture
追加され、テーブルに追加されていないことがわかります。voiture
助けてくれますか 。
コード:
実体の人物
package com.domain;
import java.io.Serializable;
import javax.persistence.*;
import java.util.Set;
/**
* The persistent class for the personne database table.
*
*/
@Entity
public class Personne implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int idpersonne;
private String nom;
//bi-directional many-to-one association to Voiture
@OneToMany(mappedBy="personne")
private Set<Voiture> voitures;
public Personne() {
}
public Personne(String nom) {
super();
this.nom = nom;
}
public int getIdpersonne() {
return this.idpersonne;
}
public void setIdpersonne(int idpersonne) {
this.idpersonne = idpersonne;
}
public String getNom() {
return this.nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public Set<Voiture> getVoitures() {
return this.voitures;
}
public void setVoitures(Set<Voiture> voitures) {
this.voitures = voitures;
}
}
エンティティーボチュール
package com.domain;
import java.io.Serializable;
import javax.persistence.*;
/**
* The persistent class for the voiture database table.
*
*/
@Entity
public class Voiture implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private int idvoiture;
private String type;
//bi-directional many-to-one association to Personne
@ManyToOne
private Personne personne;
public Voiture() {
}
public Voiture(String type) {
super();
this.type = type;
}
public int getIdvoiture() {
return this.idvoiture;
}
public void setIdvoiture(int idvoiture) {
this.idvoiture = idvoiture;
}
public String getType() {
return this.type;
}
public void setType(String type) {
this.type = type;
}
public Personne getPersonne() {
return this.personne;
}
public void setPersonne(Personne personne) {
this.personne = personne;
}
}
これがインターフェースです
package com.DAO;
import javax.ejb.Remote;
import com.domain.Personne;
@Remote
public interface PersonneDAO {
public void save(Personne personne);
public String sayhello();
}
実装パッケージ com.DAO.Impl;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import com.DAO.VoitureDAO;
import com.domain.Voiture;
@Stateless
public class VoitureDAOImpl implements VoitureDAO {
@PersistenceContext(name = "JPADD")
EntityManager em;
@Override
public void save(Voiture voiture) {
em.persist(voiture);
}
}
実装パッケージ com.DAO.Impl;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import com.DAO.PersonneDAO;
import com.domain.Personne;
@Stateless
public class PersonneDAOImpl implements PersonneDAO {
@PersistenceContext(name = "JPADD")
EntityManager em;
@Override
public String sayhello() {
// TODO Auto-generated method stub
return "helllllllllllllllllo";
}
@Override
public void save(Personne personne) {
em.persist(personne);
}
}
これはテストです
package test;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.DAO.PersonneDAO;
import com.domain.Personne;
import com.domain.Voiture;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Context intialcontext;
Properties properties = new Properties();
properties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
try {
intialcontext = new InitialContext(properties);
PersonneDAO dao = (PersonneDAO) intialcontext
.lookup("ejb:/projetweb/PersonneDAOImpl!com.DAO.PersonneDAO");
// /----------------------------objet voiture-------------
Voiture voiture = new Voiture("216");
Set<Voiture> voitures = new HashSet<Voiture>();
voitures.add(voiture);
// -------------------------------------------------------
Personne personne = new Personne("slatnia");
personne.setVoitures(voitures);
dao.save(personne);
} catch (NamingException e) {
e.printStackTrace();
}
}
}
これは私の jboss-ejb-client.properties です
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port = 4447
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false