Postgresql和Spring Roo绑定ID的串行类型

时间:2013-11-28 02:19:30

标签: spring hibernate postgresql jpa spring-roo

我在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应用程序中正确使用插入和关系?

1 个答案:

答案 0 :(得分:3)

Roo生成默认的JPA注释,您必须根据需要自定义和设置它们。注意Roo保证您的更改不会被修改。