Hibernate, dodawanie obiektów do tabeli

0

Witam,

jak można dodać do istniejącej bazy danych obiekt klasy Client, przypisując mu istniejący już w bazie AccType? Klasy w programie:

@Entity
public class Client {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private long id;
	
//pola typu firstName, password

	@OneToOne
	@JoinColumn(name = "accId")
	private Account account;

	@OneToOne
	@JoinColumn(name = "accTypeId")
	private AccType accType;
//+gettery i settery
}
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public abstract class AccType {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	protected long id;
//+getter, setter	
}
@Entity
public class ClassicAcc extends AccType {

	private String accTypeName = "Classic";
	private double interest = 0.2;
	private double monthlyFee = 0;
//+gettery i settery
}
public class Main {

	private static EntityManagerFactory entityManagerFactory;
	private static EntityManager entityManager;

	public static void main(String[] args) {

		entityManagerFactory = Persistence
				.createEntityManagerFactory("aaaa");
		entityManager = entityManagerFactory.createEntityManager();

		 Client client = new Client();
		 AccType accType = new ClassicAcc();
		 Account account = new Account();
		 
		 client.setFirstName("Jan");
		 client.setLastName("Kowalski");
         //...
		 client.setAccount(account);
		 client.setAccType(accType);
		 account.setAccNum("9876543210");
		 account.setBalance(12345567);

		entityManager.getTransaction().begin();
		 entityManager.persist(client);
		 entityManager.persist(account);
		 entityManager.persist(accType);
		entityManager.getTransaction().commit();

		entityManager.close();
		entityManagerFactory.close();
	}
}
1

Pobierz z bazy interesujący Cię obiekt AccType ustaw go jako pole w Client i wykonaj merge zamiast persist na obiekcie Client.

1 użytkowników online, w tym zalogowanych: 0, gości: 1