2015-03-30 53 views
0

下面的代码只呈现0弹簧JPA +引导+序列发生器总是0

@Id 
@GeneratedValue(strategy=GenerationType.AUTO, generator="PROJECT_SEQ_GEN") 
@SequenceGenerator(name="PROJECT_SEQ_GEN", sequenceName="X.X_PROJECT_SEQ", allocationSize=1) 
private long projectId; 

的ID我试图SEQUENCEAUTO但两者具有相同的结果。 x_project_seq.nextval在我的Oracle数据库中正常工作。我想继续使用已经在数据库中定义的序列。

据春入门指南 - Accessing Data with JPA ......

“客户的`id属性与@Id注释,使JPA将其识别为对象的ID id属性还与注解。 @GeneratedValue表示应该自动生成ID。“

从他们的榜样,它看起来像他们所做的一切是建立new Customer并自动生成的ID。我在这里错过了什么?

+0

你'战略= GenerationType.AUTO'应该是'战略= GenerationType.SEQUENCE' – 2015-03-31 00:17:42

回答

0

整个上午带我走了,但我终于解决了这个问题。

我使用Hibernate工具自动生成POJO和所有的注释是被放置在方法级别,然而,春季推荐(需要?)他们在外地。您不能仅将Id注释移到字段级别,因为它是其中之一。所以我遵循this的答案来自定义Hibernate工具,以在现场级别生成带注释的POJO。

现在,这一切都很好。

1

您正在使用您的实现错GenerationType。更新你的策略声明使用strategy = GenerationType.SEQUENCE和简单地使用PROJECT_SEQ_GENsequenceName值。

@Id 
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="PROJECT_SEQ_GEN") 
@SequenceGenerator(name="PROJECT_SEQ_GEN", sequenceName="PROJECT_SEQ_GEN", allocationSize=1) 
private long projectId; 
+0

我在帖子中写道,我曾经尝试都(基于一些答案我在其他帖子阅读) – memo 2015-03-31 14:40:43