Tworzę użytkowika do autoryzacji w web aplication. Pierwszy raz używam Set w relacjach @manytomany i nie działa, utworzył poprawnie tabele i tabele Grupy_Uzytkownicy.
W debagerze widzę że poprawnie wyszukuje rekord Grupy, dodaje do Set, potem ustawia w obiekcie encji Uzytkownik Grupy HashSet na tablica[0] i rekord encji Grupy.
Daje create, dodaje rekord do Uzytkownicy a do Grupy_Uzytkownicy nie czemu ?
tu funkcja dodania rekordu przepisanie danych z DTO i ustawienie dwóch zmiennych encji Uzytkownicy dodatkowo, w tym pola Grupy ( relacja @manytomany )
public void dodajUzytkownika(UzytkownikDTO ObiektUzytkownikaDTO) {
Uzytkownicy ObiektUzytkownika = new Uzytkownicy();
ObiektUzytkownikaDTO.setPassword(codePassword(ObiektUzytkownikaDTO.getPassword()));
przepiszDTODoUzytkonika(ObiektUzytkownikaDTO, ObiektUzytkownika);
Set<Grupy> Role = new HashSet<Grupy>();
Role.add(GrupyFacade.obiektGrupy("USER")); // zwraca encje grupy USER
ObiektUzytkownika.setGrupy(Role);
UzytkownicyFacade.create(ObiektUzytkownika);
}
Uzytkownicy
package encje;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Set;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* @author oracle
*/
@Entity
@Table(name = "Uzytkownicy")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Uzytkownicy.findAll", query = "SELECT u FROM Uzytkownicy u"),
@NamedQuery(name = "Uzytkownicy.findByIdUzytkownika", query = "SELECT u FROM Uzytkownicy u WHERE u.idUzytkownika = :idUzytkownika"),
@NamedQuery(name = "Uzytkownicy.findByLogin", query = "SELECT u FROM Uzytkownicy u WHERE u.login = :login"),
@NamedQuery(name = "Uzytkownicy.findByPassword", query = "SELECT u FROM Uzytkownicy u WHERE u.password = :password"),
@NamedQuery(name = "Uzytkownicy.findBySaldo", query = "SELECT u FROM Uzytkownicy u WHERE u.saldo = :saldo"),
@NamedQuery(name = "Uzytkownicy.findByAdres", query = "SELECT u FROM Uzytkownicy u WHERE u.adres = :adres"),
@NamedQuery(name = "Uzytkownicy.findByTelefon", query = "SELECT u FROM Uzytkownicy u WHERE u.telefon = :telefon"),
@NamedQuery(name = "Uzytkownicy.findByEmail", query = "SELECT u FROM Uzytkownicy u WHERE u.email = :email"),
@NamedQuery(name = "Uzytkownicy.findByWiek", query = "SELECT u FROM Uzytkownicy u WHERE u.wiek = :wiek")})
public class Uzytkownicy implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_uzytkownika")
private Integer idUzytkownika;
public Set<Aukcja> getAukcje() {
return aukcje;
}
public void setAukcje(Set<Aukcja> aukcje) {
this.aukcje = aukcje;
}
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 20)
@Column(name = "login")
private String login;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 100)
@Column(name = "password")
private String password;
// @Max(value=?) @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
@Column(name = "saldo")
private BigDecimal saldo;
@Size(max = 50)
@Column(name = "adres")
private String adres;
@Size(max = 20)
@Column(name = "telefon")
private String telefon;
// @Pattern(regexp="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", message="Invalid email")//if the field contains email address consider using this annotation to enforce field validation
@Size(max = 40)
@Column(name = "email")
private String email;
@Column(name = "wiek")
private Integer wiek;
@ManyToMany(mappedBy="uzytkownicy")
private Set<Aukcja> aukcje;
@ManyToMany(mappedBy="uzytkownicy")
private Set<Grupy> grupy;
public Set<Grupy> getGrupy() {
return grupy;
}
public void setGrupy(Set<Grupy> grupy) {
this.grupy = grupy;
}
public Uzytkownicy() {
}
public Uzytkownicy(Integer idUzytkownika) {
this.idUzytkownika = idUzytkownika;
}
public Uzytkownicy(Integer idUzytkownika, String login, String password) {
this.idUzytkownika = idUzytkownika;
this.login = login;
this.password = password;
}
public Integer getIdUzytkownika() {
return idUzytkownika;
}
public void setIdUzytkownika(Integer idUzytkownika) {
this.idUzytkownika = idUzytkownika;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public BigDecimal getSaldo() {
return saldo;
}
public void setSaldo(BigDecimal saldo) {
this.saldo = saldo;
}
public String getAdres() {
return adres;
}
public void setAdres(String adres) {
this.adres = adres;
}
public String getTelefon() {
return telefon;
}
public void setTelefon(String telefon) {
this.telefon = telefon;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getWiek() {
return wiek;
}
public void setWiek(Integer wiek) {
this.wiek = wiek;
}
@Override
public int hashCode() {
int hash = 0;
hash += (idUzytkownika != null ? idUzytkownika.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Uzytkownicy)) {
return false;
}
Uzytkownicy other = (Uzytkownicy) object;
if ((this.idUzytkownika == null && other.idUzytkownika != null) || (this.idUzytkownika != null && !this.idUzytkownika.equals(other.idUzytkownika))) {
return false;
}
return true;
}
@Override
public String toString() {
return "com.aukcje.aukcjewebap.encje.Uzytkownicy[ idUzytkownika=" + idUzytkownika + " ]";
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
Grupy
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package encje;
import java.io.Serializable;
import java.util.Set;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* @author oracle
*/
@Entity
@Table(name = "Grupy")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Grupy.findAll", query = "SELECT g FROM Grupy g"),
@NamedQuery(name = "Grupy.findByIdGrupy", query = "SELECT g FROM Grupy g WHERE g.idGrupy = :idGrupy"),
@NamedQuery(name = "Grupy.findByNazwaGrupy", query = "SELECT g FROM Grupy g WHERE g.nazwaGrupy = :nazwaGrupy")})
public class Grupy implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_grupy")
private Integer idGrupy;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 20)
@Column(name = "nazwa_grupy")
private String nazwaGrupy;
@ManyToMany
@JoinTable(
name = "Grupy_Uzytkownicy",
joinColumns = @JoinColumn(name = "id_grupy"),
inverseJoinColumns = @JoinColumn(name = "id_uzytkownika")
)
private Set<Uzytkownicy> uzytkownicy;
public Grupy() {
}
public Grupy(Integer idGrupy) {
this.idGrupy = idGrupy;
}
public Grupy(Integer idGrupy, String nazwaGrupy) {
this.idGrupy = idGrupy;
this.nazwaGrupy = nazwaGrupy;
}
public Integer getIdGrupy() {
return idGrupy;
}
public void setIdGrupy(Integer idGrupy) {
this.idGrupy = idGrupy;
}
public String getNazwaGrupy() {
return nazwaGrupy;
}
public void setNazwaGrupy(String nazwaGrupy) {
this.nazwaGrupy = nazwaGrupy;
}
@Override
public int hashCode() {
int hash = 0;
hash += (idGrupy != null ? idGrupy.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Grupy)) {
return false;
}
Grupy other = (Grupy) object;
if ((this.idGrupy == null && other.idGrupy != null) || (this.idGrupy != null && !this.idGrupy.equals(other.idGrupy))) {
return false;
}
return true;
}
@Override
public String toString() {
return "encje.Grupy[ idGrupy=" + idGrupy + " ]";
}
}