Tabele łączące - pobieranie id

0

Witam, piszę menadżer zadań i mam problem z tabelami łączącymi, podczas tworzenia nowego projektu (wybieram w nim klienta jak na zdjęciu nr 1) wszystko cacy. Tworzy projekt, ale nie wklepuje do łączącej id_projektu i id_klienta (jak na zdjęciu nr 2)
user image
zdjęcie nr 1
user image
zdjęcie nr 2

Kod addProjectController:

btnDodajProjekt.setOnAction(new EventHandler<ActionEvent>() {
			public void handle(ActionEvent event) {
				Project dodajProject = new Project();
				dodajProject.setTitle(tf_tytul.getText());
				dodajProject.setDescription(ta_opis.getText());
				dodajProject.setDate_start(Date.valueOf(dp_start.getValue()));
				dodajProject.setDate_finish(Date.valueOf(dp_koniec.getValue()));
				dodajProject.setStatus(cb_status.getValue());
				dodajProject.setCustomers(przydzielKlientaDoProjektu());
				
				SprawdzaniePoprawnosci sp = new SprawdzaniePoprawnosci();

				if (sp.jesliPoprawny(dodajProject)) {
					DostepProject dp = new DostepProject();
					boolean dodany = dp.saveProject(dodajProject);
					if (dodany) {
						JOptionPane.showMessageDialog(null,
								"Pomyślnie dodano projekt.");

						Stage stage = (Stage) btnDodajProjekt.getScene()
								.getWindow();

						stage.close();
					} else {
						JOptionPane.showMessageDialog(null,
								"Błąd dodawania projektu.");
					}
				} else {
					System.out.println("Uzupełnij prawidłowo dane.");
				}
			}
		});
	}
	public List<Customer> przydzielKlientaDoProjektu() {
		List<Customer> klientDoProjektu = new ArrayList<Customer>();
		klientDoProjektu.add(cb_klient.getSelectionModel().getSelectedItem());
		return klientDoProjektu;
	}
 

Fragment kodu modelu Project:

 
@ManyToMany(mappedBy = "klient")
	private List<Customer> customers;

public List<Customer> getCustomers() {
		if (customers != null) {
			return customers;
		} else {
			return null;
		}
	}
	public void setCustomers(List<Customer> customers) {
		this.customers = customers;
	}

Fragment kodu modelu Customer:

 
@ManyToMany
	@JoinTable(name = " klienci_projekty", joinColumns = { @JoinColumn(name = "id_customer") }, inverseJoinColumns = { @JoinColumn(name = "id_project") })
	private List<Project> klient;

Móżdżę nad tym cały dzień i bez efektu, zwłaszcza, że mam taki sam kod dla Taska i tam działa a tu nie, tam też mam ManyToMany. Proszę o podpowiedź, gdzie jest błąd, lub czego tu brakuje. Dzięki wielkie z góry.

0

no właśnie nic... Bo to chcąc nie chcąc działa, klienta sobie wybiorę, projekt stworzę, no ale potem jak chcę wyświetlić przykładowo w podglądzie projektów, zadania należące do projektu, wykonawcę(usera) i zleceniodawcę(klienta) to niestety to nie działa... Wyświetla mi tylko zadania z projektu, w łączącej zadania_projekty mi się kulturalnie łącząca wypełnia id-kami, a w tej cholerze nie chce się wypełnić, chociaż mam podobne te metody jak powyżej. Nie wiem w czym rzecz, zmęczyło mnie to dziś bardzo...

Oczywiście zadania zmapowane są tak samo ManyToMany wszystko robione na tej samej zasadzie. Jest praktycznie to samo jeśli chodzi o zasadę działania..

0

Już domyślam się jaki jest problem. Zapewne chodzi o te errory podczas egzekwowania bazy danych, w konsoli wyskakuje taki log:

Fragment z konsoli:

...
maj 24, 2015 8:51:12 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: HHH000388: Unsuccessful: create table  klienci_projekty (id_customer bigint not null, id_project bigint not null)
maj 24, 2015 8:51:12 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: Table 'klienci_projekty' already exists
maj 24, 2015 8:51:12 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: HHH000388: Unsuccessful: create table  uzytkownicy_projekty (id_project bigint not null, id_user bigint not null)
maj 24, 2015 8:51:12 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: Table 'uzytkownicy_projekty' already exists
maj 24, 2015 8:51:12 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: HHH000388: Unsuccessful: create table  zadania_projekty (id_task bigint not null, id_project bigint not null)
maj 24, 2015 8:51:12 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: Table 'zadania_projekty' already exists
maj 24, 2015 8:51:13 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: HHH000388: Unsuccessful: alter table  klienci_projekty add constraint FK_r65fuex8o6xcdq35y9vvk0nb6 foreign key (id_project) references Project (IdProject)
maj 24, 2015 8:51:13 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: Can't write; duplicate key in table '#sql-718_59'
maj 24, 2015 8:51:13 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: HHH000388: Unsuccessful: alter table  klienci_projekty add constraint FK_35xctdctf932f4iwgs3m7g61g foreign key (id_customer) references Customer (IdCustomer)
maj 24, 2015 8:51:13 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: Can't write; duplicate key in table '#sql-718_59'
maj 24, 2015 8:51:13 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: HHH000388: Unsuccessful: alter table  uzytkownicy_projekty add constraint FK_cficcf5wqmxldyvf0xnuqw8mh foreign key (id_user) references Project (IdProject)
maj 24, 2015 8:51:13 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: Can't write; duplicate key in table '#sql-718_59'
maj 24, 2015 8:51:13 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: HHH000388: Unsuccessful: alter table  uzytkownicy_projekty add constraint FK_icajx0mmsvgy553sp9jqvq425 foreign key (id_project) references User (idUser)
maj 24, 2015 8:51:13 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: Can't write; duplicate key in table '#sql-718_59'
maj 24, 2015 8:51:14 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: HHH000388: Unsuccessful: alter table  zadania_projekty add constraint FK_eo69ol46hdwhuhf24i4n8w457 foreign key (id_project) references Project (IdProject)
maj 24, 2015 8:51:14 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: Can't write; duplicate key in table '#sql-718_59'
maj 24, 2015 8:51:14 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: HHH000388: Unsuccessful: alter table  zadania_projekty add constraint FK_ably07pv5ug283h9kq842l9t foreign key (id_task) references Task (IdTask)
maj 24, 2015 8:51:14 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: Can't write; duplicate key in table '#sql-718_59'
maj 24, 2015 8:51:14 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000232: Schema update complete

Jak sobie z tym poradzić?? Wkleję mapowanie z modelu Task i przykładowo Projekt(zaznaczam, że zadania_uzytkownicy działa i nie sypie takim errorem):

Model Task
@ManyToMany
	@JoinTable(name = " zadania_projekty", joinColumns = { @JoinColumn(name = "id_task") }, inverseJoinColumns = { @JoinColumn(name = "id_project") })
	private List<Project> projects;
	@ManyToMany
	@JoinTable(name = "zadania_uzytkownicy", joinColumns = { @JoinColumn(name = "id_task") }, inverseJoinColumns = { @JoinColumn(name = "id_user") })
	private List<User> UsersList;
 

Model Project

	@ManyToMany(mappedBy = "projekt")
	private List<User> users;

	@ManyToMany(mappedBy = "klient")
	private List<Customer> customers;

	@ManyToMany(mappedBy = "projects")
	private List<Task> tasks;

	@OneToMany(mappedBy = "project")
	private List<Reports> reports; 
0

Jeśli wszystko dobrze rozumiem zapisujesz projekt w tym miejsu, boolean dodany = dp.saveProject(dodajProject); Z kolei w mapowaniu pól nie ma cascade type all, spróbuj dodać i wtedy zapisać. Oczywiście po stronie modelu projektu bo to projekt zapisujesz.

0

Niestety nie pomogło, od nowa mapowanie robię. zrobię to jak należy

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