2014-06-17 4 views
0

Task.java나는 @OneToMany도 양방향 @ManyToOne

@Entity 
@Table(name = "t_task") 
public class Task { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "idTask") 
    private long idTask; 
    ... 
    @OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.ALL}, mappedBy = "task") 
    private List<TaskAction> actions; 
    ... 

public Task() {} 

public Task(String taskname, String description, Date date, 
     Category category, Priority priority, User user) { 
    this.taskname = taskname; 
    this.description = description; 
    this.date = new Date((date.getTime()/1000) * 1000); 
    this.deadline = null;// new Date((deadline.getTime()/1000)*1000); 
    this.category = category; 
    this.priority = priority; 
    this.user = user; 
    this.userResponsible = null; 
} 

public Task(String taskname, String description, Date date, Date deadline, 
     Category category, Priority priority, State state, User user, 
     User userResponsible, String evaluation, int pending) { 
    this.taskname = taskname; 
    this.description = description; 
    this.date = new Date((date.getTime()/1000) * 1000);// delete milis 
    this.deadline = new Date((deadline.getTime()/1000) * 1000); 
    this.category = category; 
    this.priority = priority; 
    this.state = state; 
    this.user = user; 
    this.userResponsible = userResponsible; 
    this.evaluation = evaluation; 
    this.pending = pending; 
} 

TaskAction.java

@Entity 
@Table(name = "t_taskaction") 
public class TaskAction { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "idTaskAction") 
    private long idTaskAction; 
    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name = "idTask", nullable = false) 
    private Task task; 
    ... 

public TaskAction() { 
} 

public TaskAction(Task task, Date date, String action, String description, 
     User user) { 
    this.task = task; 
    this.date = new Date((date.getTime()/1000) * 1000); 
    this.actionname = action; 
    this.description = description; 
    this.user = user; 
} 

Test.java

@Test 
public void testTaskActionCreate() { 
    taskPriorityDao.saveOrUpdate(priority); 
    taskCategoryDao.saveOrUpdate(category); 
    taskStateDao.saveOrUpdate(state); 
    userDao.saveOrUpdate(user); 

    Date rightnow = Calendar.getInstance().getTime(); 

    Task t1 = new Task("My first task", "This is a task", rightnow, 
      rightnow, category, priority, state, user, user, "okey", 0); 

    taskDao.merge(t1);//save 
    t1 = taskDao.get("My first task"); 

    logger.info("id Task >" + t1.getIdTask()); 

    TaskAction ta1 = new TaskAction(t1, rightnow, "Task action 1", 
      "Task action 1 description", user); 
    TaskAction ta2 = new TaskAction(t1, rightnow, "Task action 2", 
      "Task action 2 description", user); 
    TaskAction ta3 = new TaskAction(t1, rightnow, "Task action 3", 
      "Task action 3 description", user); 
    TaskAction ta4 = new TaskAction(t1, rightnow, "Task action 4", 
      "Task action 4 description", user); 

    taskActionDao.saveOrUpdate(ta1); 
    taskActionDao.saveOrUpdate(ta2); 
    taskActionDao.saveOrUpdate(ta3); 
    taskActionDao.saveOrUpdate(ta4); 

    System.out.println(" 1 >" + new TaskActionService().getAllTaskActions().size()); 
    System.out.println(" 2 >" + t1.getActions().size()); 

를 표시 할 수 없습니다 행이 데이터베이스에 삽입 되었음에도 불구하고 이러한 메시지가 나타납니다.

1> NullPointerException이

2> 빈리스트, 크기 = 0

데이터 모델

enter image description here

+0

이름을 인식하지 못합니다 알고'의회 처리가 struts'에서'액션 클래스를 나타내는 데 사용됩니다, 그것의 잘못된 관행은 엔티티 연습을 이름의이 유형을 따르도록 수업. 앞으로 올바른지 ... – Dileep

답변

0

당신은 추가 누락 TaskActionTask-TaskAction 목록 actions

JPA가 양방향 매핑에서 완벽하게 작동하려면 양측에 관계를 올바르게 설정해야합니다. 순수 영어

-TaskAction에 대한 Task하지만 TaskTaskAction

+0

태스크 생성자를 추가했지만 매핑이 Task 및 TaskAction 속성에 있습니다. – Joe

+0

'TaskAction' 생성자를 게시 할 수 있습니까? 즉, - 새로운 TaskAction (t1, rightnow, "작업 동작 1", "작업 동작 1 설명", 사용자), ' –

+0

TaskAction 생성자가 추가됨 – Joe