Je suis en train de construire un service simple de repos dans laquelle je peux ajouter des clients et de les mettre à jour, essentiellement comme une expérience pour apprendre les technologies Java EE. J'utilise cette application dans TomEE et j'utilise Eclipse et Maven pour coder et construire.OpenJPA @OneToMany Liste retour null
Dans mon projet, j'ai la classe principale de l'entité nous appelons « Clients ». Avec un client, vous pouvez avoir plusieurs emplacements et plusieurs contacts, donc j'ai ces deux configurations comme un mappage d'entité unidirectionnel utilisant @OneToMany. Je suis capable de générer le client avec le mappage à l'adresse et les contacts, chacune de ces tables ayant l'ID correspondant au client. Quand je vais ensuite voir les données, toutes les données dans "Client" sont là, mais juste une valeur de NULL pour "Adresses" et "Contacts". J'utilise un EJB en tant que Entity Manager et j'ai une configuration CriteriaQuery pour obtenir les données.
Client.java
@Entity
public class Client {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="vendor_id", referencedColumnName="id")
private List<ClientAddress> addresses
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="vendor_id", referencedColumnName="id")
private List<ClientContact> contacts
...
ClientAddress.java
@Entity
public class ClientAddress {
...
}
ClientContacts.java
@Entity
public class ClientContacts {
...
}
ClientEntityBroker.java
@Stateless
@Localbean
public class VendorEntityBroker {
@PersistenceContext(unitName = "client-mysql",
type=PersistenceContextType.TRANSACTION)
private EntityManager em;
public List<Vendor> getAllClients() {
CriteriaQuery<Client> cq = em.getCriteriaBuilder().createQuery(Client.class);
cq.select(cq.from(Client.class));
return em.createQuery(cq).getResultList();
}
...
}
Je n'ai pas une annotation @ManyToOne dans les deux ClientAddress ou ClientContacts depuis sa cartographie un sens unique. Les entrées de base de données sont toutes créées, mais il semble que je ne puisse pas récupérer l'adresse et les données de contact comme je l'avais prévu. Je suis nouveau à ce sujet, donc je suppose que je peux interroger les données erronées ou il y a quelque chose de supplémentaire nécessaire sur l'entrée pour qu'il soit en mesure de cartographier correctement sur la demande.
Je suis en cours d'exécution OpenJPA 2.4 et tomee 1.7.2.