사용자 추가가 정상적으로 작동합니다. 문제는 입니다. 작업이 추가되고 있습니다. n 해당 사용자가 추가되고 있지만 사용자 테이블에 '새 사용자가 추가 될 때마다'추가됩니다. 이것은 브리지 테이블에있는 taskid n 사용자 ID의 불일치로 이어지고 있습니다. 누구든지이 ... 내 POJOS 사용자 n 작업 아래에있는 정말 .... 호출은 JSP 파일에 의해 수행됩니다 ... 그것에 어떤 도움을 기다리고 !! hibernate many to many annotation을 사용하는 동안 db에 중복 레코드가 삽입되는 것을 방지하는 방법
@Entity
@Table(name ="Tasks")
public class Tasks implements Serializable
{
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column (name = "t_Id")
private int Id;
@Column (name = "t_Name")
private String TaskName;
@Column (name = "t_Details")
private String TaskDetails;
@Column (name = "t_Status")
private int TaskStatus;
@ManyToMany(targetEntity = org.Users.class, fetch = FetchType.LAZY, cascade = {CascadeType.ALL, CascadeType.PERSIST})
//@Cascade({ CascadeType.ALL})
@JoinTable(name = "user_Tasks", joinColumns = {@JoinColumn(name = "t_Id")}, inverseJoinColumns = {@JoinColumn(name = "u_Id")})
private Set <Users> users = new HashSet<Users>(0);
public Tasks(){}
public Tasks(String TaskName) {
this.TaskName = TaskName;
}
public Tasks(String TaskName, String TaskDetails, int TaskStatus) {
this.TaskName = TaskName;
this.TaskDetails = TaskDetails;
this.TaskStatus = TaskStatus;
}
public Tasks(String TaskName, String TaskDetails, int TaskStatus, Set<Users> users)
{
this.TaskName = TaskName;
this.TaskDetails = TaskDetails;
this.TaskStatus = TaskStatus;
this.users = users;
}
public int getId() {
return Id;
}
public void setId(int Id) {
this.Id = Id;
}
public String getTaskName() {
return TaskName;
}
public void setTaskName(String TaskName) {
this.TaskName = TaskName;
}
public String getTaskDetails() {
return TaskDetails;
}
public void setTaskDetails(String TaskDetails) {
this.TaskDetails = TaskDetails;
}
public int getTaskStatus() {
return TaskStatus;
}
public void setTaskStatus(int TaskStatus) {
this.TaskStatus = TaskStatus;
}
public Set<Users> getUsers() {
return users;
}
public void setUsers(Set<Users> users) {
this.users = users;
}
}
@Entity
@Table(name = "USERS")
public class Users implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "u_Id")
private int Id;
@Column (name ="u_Name")
private String Name;
@Column (name ="u_Username")
private String Username;
@Column (name="u_Password")
private String password;
@ManyToMany(targetEntity =org.Tasks.class, fetch = FetchType.LAZY, mappedBy="users", cascade ={CascadeType.ALL, CascadeType.PERSIST})
// @Cascade({CascadeType.ALL})
@JoinTable(name = "user_Tasks", joinColumns = {@JoinColumn(name = "u_Id")}, inverseJoinColumns = {@JoinColumn(name = "t_Id")})
private Set<Tasks> task = new HashSet<Tasks>();
public Users(){}
public Users(String Name) {
this.Name = Name;
}
public int getId() {
return Id;
}
public void setId(int Id) {
this.Id = Id;
}
public String getName() {
return Name;
}
public void setName(String Name) {
this.Name = Name;
}
public String getUsername() {
return Username;
}
public void setUsername(String Username) {
this.Username = Username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Set<Tasks> getTask() {
return task;
}
public void setTask(Set<Tasks> task) {
this.task = task;
}
@Override
public int hashCode() {
int hash = 7;
hash = 19 * hash + (this.Name != null ? this.Name.hashCode() : 0);
hash = 19 * hash + (this.Username != null ? this.Username.hashCode() : 0);
hash = 19 * hash + (this.password != null ? this.password.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Users other = (Users) obj;
if ((this.Name == null) ? (other.Name != null) : !this.Name.equals(other.Name)) {
return false;
}
if ((this.Username == null) ? (other.Username != null) : !this.Username.equals(other.Username)) {
return false;
}
if ((this.password == null) ? (other.password != null) : !this.password.equals(other.password)) {
return false;
}
return true;
}
}
public class ManageTasks
public static void main(String arg[])
{
try
{
SessionFactory factory = new AnnotationConfiguration().configure().addPackage("org").addAnnotatedClass(Tasks.class).addAnnotatedClass(Users.class).buildSessionFactory();
}catch(Exception e)
{
System.out.println(e);
}
}
public Integer addTasks(String TaskName, String TaskDetails, int TaskStatus, Set use)
{
SessionFactory factory = new AnnotationConfiguration().configure().addPackage("org").addAnnotatedClass(Tasks.class).addAnnotatedClass(Users.class).buildSessionFactory();
Session session = factory.openSession();
Transaction tx = null;
Integer taskID = null;
try
{
tx = session.beginTransaction();
Tasks task = new Tasks(TaskName, TaskDetails, TaskStatus);
task.setUsers(use);
session.save(task);
tx.commit();
}catch(HibernateException e)
{
if(tx!=null) tx.rollback();
e.printStackTrace();
}
finally
{
session.close();
}
return taskID;
}
public void addUser(String name, String username, String password)
{
SessionFactory factory = new AnnotationConfiguration().configure().addPackage("org").addAnnotatedClass(Users.class).
buildSessionFactory();
Session session = null;
session = factory.openSession();
Transaction tx = null;
Integer userID = null;
try
{
tx = session.beginTransaction();
Users user = new Users();
user.setName(name);
user.setUsername(username);
user.setPassword(password);
userID = (Integer) session.save(user);
tx.commit();
}catch (HibernateException e)
{
if (tx!=null) tx.rollback();
e.printStackTrace();
}
finally
{
session.close();
}
}
여기
String taskname = request.getParameter("taskname");
String taskdetails = request.getParameter("taskdetails");
tring user1 = request.getParameter("user1");
String user2 = request.getParameter("user2");
String user3 = request.getParameter("user3");
Set <Users> user = new HashSet <Users>();
user.add(new Users(user1));
user.add(new Users(user2));
user.add(new Users(user3));
nt TaskStatus;
if(taskname == null && taskdetails == null)
TaskStatus = 0;
else
TaskStatus = 1;
ManageTasks mt = new ManageTasks();
mt.addTasks(taskname, taskdetails, TaskStatus, user);
out.println("Sucessfully added!!");
예 내가 그것을 시도하지만 난이 오류를 제거하지 못할 그래서 당신은 DB에서 사용자를 검색하고 대체하는 방법
findUserByName(String name)
를 작성해야합니다. u는 내 파일에서 변경해야합니다 코드 조각을 제안 할 수 있습니다 .... 내가 그렇게 긴급하게 필요 ..... ur 도움말에 대한 방법에 의해 thanxx하지만 좀 더 도움이 필요해 ... – user2062376나는 문제가 있다고 생각합니다 코드에서 addTask를 호출합니다. 추가 도움이 필요하면 해당 코드를 게시하십시오. – Bogdan
안녕하세요, 코드를 게시했습니다 ..... plz help ....... thanxx를 미리 .. – user2062376