java - spring roo - 在 mysql 数据库中使用自己的 id 而不是自动生成的 key

标签 java mysql spring-mvc spring-roo

我是 spring-roo 的新手,我想为 mysql 数据库中的数据库条目生成和使用我的 on id,而不是自动生成的 id。而且我不确定该怎么做。我在这里找到的唯一相关帖子是这个:

How can I provide my own @id field using Spring Roo and JPA

但这篇文章现在已经四年了,我使用的是 spring roo 1.3.2 而不是 1.1.0,所以在此期间可能发生了一些变化。

所以在test_Roo_Jpa_Entity.aj中spring roo生成的代码是:

privileged aspect test_Roo_Jpa_Entity {

declare @type: test: @Entity;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long test.id;

这也是我在数据库中看到的。新条目的 ID 是自动生成的,这是我想避免的事情。我在 spring roo 中使用了 --identifierField 或 --identifierColumn 命令,但到目前为止没有任何成功。但我不确定如何使用这些命令。

非常感谢您的提前帮助!

编辑 1:

保留我的实体的代码:

 String[] split = line.split(";"); Long TEST_ID = Long.valueOf(split[0]);
 String TEST_NAME = split[1]; TEST test = new TEST(); test.setName(TEST_NAME);
 test.setId(TEST_ID); test.persist()

最佳答案

我认为您必须将这部分从您的 aspectJ 文件移动到您的 java 实体文件。

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long test.id;

为此,您必须标记 private Long test.id; 行并右击。然后您必须单击AspectJ RefactoringPush In。现在应该将这部分移到您的 Java 类中。

然后将策略更改为@GeneratedValue(strategy = GenerationType.IDENTITY)

现在您应该能够创建自己的 ID。当然你的数据库也应该接受这个。

关于java - spring roo - 在 mysql 数据库中使用自己的 id 而不是自动生成的 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34607866/

相关文章:

java - 在 Spring Cloud Stream 中使用 PollableMessageSource 输入时如何使用 avro native 解码器?

java - Netty 4.0.0.CR9 中的 AIO

java - Informix JDBC 上的 SSl 在 JBOSS 7 下不起作用

java - 实现 Spring Controller 的单元测试时缺少依赖项 hasSize() 和 hasProperty()

java - spring mvc中不存在必需的MultipartFile参数 'file'

java - 在 servlet 过滤器中保存并重新使用请求?

mysql - 插入到 phpmyadmin 上的触发器

php - 使用 Laravel 查询避免返回 "Undefined offset 0"表为空

mysql - 获取具有相同 ID 列的特定 COUNT 值

java - SpringMVC : How to filter the client's IP?