【问题标题】:I can not list @onetomany nor @manytoone bidirectional我无法列出@onetomany 或@manytoone 双向
【发布时间】:2014-06-17 08:33:07
【问题描述】:

Task.java

@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> 空指针异常

2> 空列表,大小 = 0

数据模型

【问题讨论】:

  • 名称Action用来表示Action Class in struts,在Entity类中遵循这种命名习惯是错误的做法。以后要改正..

标签: java hibernate jakarta-ee one-to-many many-to-one


【解决方案1】:

您缺少将TaskAction 添加到TaskTaskAction 列表actions

task.getActions().add(TaskAction)

为了让 JPA 在双向映射中完美工作,需要正确设置双方的关系。

纯英语 - TaskAction 知道 TaskTask 不知道 TaskAction

【讨论】:

  • 我添加了任务构造函数,但映射在 Task 和 TaskAction 属性中
  • 你能发布你的TaskAction构造函数吗?即 - new TaskAction(t1, rightnow, "Task action 1", "Task action 1 description", user);
  • 添加了 TaskAction 构造函数
  • @Joe 我已经修改了我的答案,如果有帮助请告诉我
  • 我明白了,我必须在 @Test 函数中添加它, task.getActions().add(TaskAction) ,我错了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 2019-05-22
  • 2013-06-17
  • 2011-06-25
  • 1970-01-01
  • 2020-07-19
相关资源
最近更新 更多