0

我有两个实体:EXAM 和 EXAM_NORMAL。

考试

@Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String codeName;
    @Enumerated(EnumType.STRING)
    private ExamType examType;
    @ManyToOne
    private Category category;
    @OneToMany(mappedBy="id",cascade=CascadeType.PERSIST)
    @OrderBy("id")
    private List<Exam_Normal> exam_Normal;

考试_正常

 @Id   
    private Long item;
    @Id
    @ManyToOne
    private Exam id;
    @Enumerated(EnumType.STRING)
    private Gender gender;
    private Integer age_month_from;
    private Integer age_month_to;

问题是,如果我尝试将 EXAM_NORMAL 列表放在 EXAM 类中,如果我尝试持久化(EXAM),我会收到一个错误,因为它首先尝试持久化 EXAM_NORMAL 但它不能因为 EXAM 的主键丢失,因为它不是坚持...

有没有办法定义顺序?或者我应该设置null列表,坚持然后再次设置列表?

谢谢:)

4

1 回答 1

1

您的注释有问题(这就是 JPA 提供程序未按正确顺序执行查询的原因)。

为什么@Id“Exam_Normal”中有两个(顺便说一句,这不是在 Java 中命名类的一种非常标准的方式)?还有,你怎么没有@GeneratedValue?也许先解决这个问题。

如果这不起作用,请稍微改进您的问题,显示更多代码(以及创建要持久化的实体的部分),改进格式。这将增加您获得答案的机会。在当前状态下,复制需要花费太多时间/精力。

于 2010-03-17T22:53:11.670 回答