我对一个序列有一个奇怪的问题。我正在使用PostgreSQL9和geronimo 2.2。我已经在db环境中创建了序列PLANTS_ID_SEQ,当我尝试创建一个新实体时,我在我的日志(来自postegresql)中得到一个错误,说明关系PLANTS_ID_SEQ存在。它似乎试图创建已经创建的序列。这是来自实体bean的代码:
@Id
@GeneratedValue(generator="PLANTS_SEQ",strategy=GenerationType.SEQUENCE) @SequenceGenerator(name="PLANTS_SEQ", sequenceName="PLANTS_ID_SEQ",allocationSize=1) @Column(name = "ID")
private Integer id; 请注意,如果我更改了序列名称(eg sequenceName="MY_SEQ"),代码将正确运行,但它会在postgresql中创建(并明显使用) MY_SEQ序列。如果任何人有关于这个案例的线索,请分享。谢谢乔治
发布于 2011-05-12 05:25:39
如果您的表有一个序列类型的列,那么postgres将为您创建序列,并在插入时自动使用它。
它创建的序列被命名为"tablename_id_seq"...
也许你正在尝试复制postgres已经做过的事情,并创建一个重复的序列。
发布于 2011-05-15 21:35:08
已解决:应在persistence.xml中添加以下属性:
property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(Sequences=false)" 这样,openjpa的MappingTool将不会再次尝试创建该序列。
https://stackoverflow.com/questions/5969436
复制相似问题