我有两个实体:EXAM和EXAM_NORMAL。
EXAM
@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;
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类中放置一个EXAM_NORMAL列表,如果我尝试保持(EXAM),我会收到一个错误,因为它首先尝试保留EXAM_NORMAL,但它不能因为EXAM的主键丢失,因为它没有坚持......
有没有办法定义订单?或者我应该设置null
列表,坚持,然后再次设置列表?
感谢:)
答案 0 :(得分:1)
您的注释有问题(这就是为什么JPA提供程序没有按正确的顺序执行查询)。
为什么在“Exam_Normal”中有两个@Id
(BTW不是用Java命名类的非常标准的方法)?另外,为什么你没有@GeneratedValue
?也许先解决这个问题。
如果这不起作用,请稍微改进一下您的问题,显示更多代码(以及创建要保留的实体的部分),改进格式。这会增加你获得答案的机会。在它的当前状态下,重建需要花费太多时间/精力。