我在Spring Roo中使用Postgresql 序列类型时遇到问题。我想要的是拥有一个自动递增的id列,它将与Roo中自动生成的实体类一起使用。
Postgresql序列是使用默认在Spring Roo中处理的方式生成的,在spring应用程序中运行良好。但有时我必须使用sql手动在数据库中插入行。 (当我执行INSERT INTO ...语句时,序列似乎不能正常工作)。如果我可以使用串行类型,那么手动INSERTS很容易。
例如,我有一个办公室实体和员工实体。员工和办公室之间存在多对一的关系。
这是我的Office实体类。
@RooJavaBean
@RooToString
@RooJpaActiveRecord
public class Office {
@Id
@Column(name="officeid", columnDefinition = "serial")
@Generated(GenerationTime.INSERT)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long officeid;
/**
* Office Name
*/
@NotNull
@Size(max = 100)
private String name;
}
虽然当我的测试插入office记录时这确实有效,但是当officeid外键值为null时插入员工记录时它会失败。 (我想它需要在办公室插入和员工插入之间刷新,但自动生成测试似乎不这样做。)
那么用什么正确的注释来告诉Roo(和hibernate / jpa)使用串行数据类型,以及如何在spring应用程序中正确使用插入和关系?
答案 0 :(得分:3)
Roo生成默认的JPA注释,您必须根据需要自定义和设置它们。注意Roo保证您的更改不会被修改。