Sto cercando di familiarizzare meglio con JPA, così ho creato un progetto molto semplice. Ho una classe utente e una classe indirizzo. Sembra che devo persistere entrambi anche se sto aggiungendo Address alla mia classe User?Perché devo mantenere entrambi gli oggetti se Indirizzo è annidato in Utente?
utente:
import javax.persistence.*;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@Entity
@Table(name = "usr") // @Table is optional, but "user" is a keyword in many SQL variants
@NamedQuery(name = "User.findByName", query = "select u from User u where u.name = :name")
public class User {
@Id // @Id indicates that this it a unique primary key
@GeneratedValue // @GeneratedValue indicates that value is automatically generated by the server
private Long id;
@Column(length = 32, unique = true)
// the optional @Column allows us makes sure that the name is limited to a suitable size and is unique
private String name;
// note that no setter for ID is provided, Hibernate will generate the ID for us
@OneToMany(fetch=FetchType.LAZY, mappedBy="user")
private List<Address> addresses;
Indirizzo:
@Entity
public class Address {
@Id // @Id indicates that this it a unique primary key
@GeneratedValue // @GeneratedValue indicates that value is automatically generated by the server
private Long id;
@Column(length=50)
private String address1;
@ManyToOne
@JoinColumn(name="user_id")
private User user;
EntityManager:
EntityManager entityManager = Persistence.createEntityManagerFactory("tutorialPU").createEntityManager();
entityManager.getTransaction().begin();
User user = new User();
user.setName("User");
List<Address> addresses = new ArrayList<Address>();
Address address = new Address();
address.setAddress1("Address1");
addresses.add(address);
user.setAddresses(addresses);
entityManager.persist(user);
entityManager.persist(address);
entityManager.getTransaction().commit();
entityManager.close();
probabilmente facendo qualcosa di sbagliato ... semplicemente non sono sicuro di cosa si tratta?
Qualsiasi suggerimento sarebbe apprezzato.
Grazie,
S
http://docs.oracle.com/javaee/6/api/javax/persistence/OneToMany.html#cascade(). Per impostazione predefinita, non è in cascata, in più è anche opzionale. –