Hi everyone,
I’m a newbie with Vaadin and Java.
I’m making a form to edit and to create users and the problem is that a user belong to a group so when I open a popup with the edit form,
the fields are refilled except the ComboBox.
And another problem I have, when I’m inserting data to the DB(MySQL),
the autoincrement works wrong, it increments in 50 in 50
.
Any Idea?
Thanks!!
User.class
[code]
package model;
import java.io.Serializable;
import javax.persistence.*;
/**
- The persistent class for the USERS database table.
*/
@Entity
@Table(name=“USERS”)
@NamedQuery(name=“User.findAll”, query=“SELECT u FROM User u”)
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="ID")
private int id;
@Column(name="MAIL")
private String mail= "";
@Column(name="PASSWORD")
private String password = "";
@Column(name="PICTURE")
private String picture ="";
@Column(name="USERNAME")
private String username ="";
//bi-directional many-to-one association to Group
@ManyToOne
@JoinColumn(name="groupId")
private Group group;
public User() {
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public String getMail() {
return this.mail;
}
public void setMail(String mail) {
this.mail = mail;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
public String getPicture() {
return this.picture;
}
public void setPicture(String picture) {
this.picture = picture;
}
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
public Group getGroup() {
return group;
}
public void setGroup(Group group) {
this.group = group;
}
public String toString(){
return this.getUsername();
}
}
[/code]Group.class
[code]
package model;
import java.io.Serializable;
import javax.persistence.*;
import java.util.List;
/**
- The persistent class for the GROUPS database table.
*/
@Entity
@Table(name=“GROUPS”)
@NamedQueries({
@NamedQuery(name=“Group.findAll”, query=“SELECT g FROM Group g”),
@NamedQuery(name=“Group.findById”, query=“SELECT g FROM Group g WHERE g.id = :id”),
@NamedQuery(name=“Group.findByName”, query=“SELECT g FROM Group g WHERE g.name = :name”),
})
public class Group implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String description;
private String name;
//bi-directional many-to-one association to User
@OneToMany(mappedBy="group")
private List<User> users;
public Group() {
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public String getDescription() {
return this.description;
}
public void setDescription(String description) {
this.description = description;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public List<User> getUsers() {
return this.users;
}
public void setUsers(List<User> users) {
this.users = users;
}
public User addUser(User user) {
getUsers().add(user);
user.setGroup(this);
return user;
}
public User removeUser(User user) {
getUsers().remove(user);
user.setGroup(null);
return user;
}
public String toString(){
return String.valueOf(this.getId());
}
}
[/code]main
private Component buildForm() {
form = new GridLayout(2, 5);
TextField id = new TextField("Id: ");
id.setVisible(false);
TextField username = new TextField("First name:");
TextField password = new TextField("Password:");
TextField mail = new TextField("E-mail address:");
TextField picture = new TextField("Picture:");
List<Group> groups = GroupService.findAll();
BeanItemContainer<Group> groupsItem = new BeanItemContainer<>(Group.class, groups);
ComboBox group = new ComboBox("groupId", groupsItem);
fieldGroup.bind(id, "id");
fieldGroup.bind(username, "username");
fieldGroup.bind(password, "password");
fieldGroup.bind(mail, "mail");
fieldGroup.bind(picture, "picture");
fieldGroup.bind(group, "group");
form.addComponent(username);
form.addComponent(password);
form.addComponent(mail);
form.addComponent(picture);
form.addComponent(id);
form.addComponent(group);
return form;
}
private Component controls(){
...
Button edit = new Button("Edit", new Button.ClickListener() {
public void buttonClick(ClickEvent event) {
System.out.println("FormtutorialUI -> buildTableControls -> EditButton");
editUser(gUser);
UI.getCurrent().addWindow(formWindow);
}
});
...
}
private void editUser(User user) {
if (user == null) {
user = new User();
}
BeanItem<User> item = new BeanItem<User>(user);
fieldGroup.setItemDataSource(item);
}