1

我想要一个包含字符串值集合的实体,它存储可以是字母数字的收据编号,因此需要存储字符串。如何使用 spring roo 将这样的字段添加到实体中?

我试过了

field set --fieldName controlNumbers --type java.lang.String --class ~.model.Receipt 但是在项目中找不到关于指定类型的错误,我需要先创建它。

然后我尝试将下面的代码直接注入实体并保存它并更新了aj文件。但是,当我运行 tomcat 时,这也有问题。

   private Set<String> controlNumbers = new HashSet<String>();

还看到有人这样做

@org.hibernate.annotations.CollectionOfElements
private Set<String> controlNumbers = new HashSet<String>();

但是你猜怎么着,CollectionOfElements 已被弃用。

请帮忙。

4

2 回答 2

0

我最近不得不实现类似的东西,虽然我没有使用 spring roo,但我的实体需要存储一个 Map 并且我的实体中的以下内容起到了作用:

@ElementCollection(fetch = FetchType.EAGER)
@MapKeyColumn(name = "CONFIG_KEY")
@Column(name = "CONFIG_VALUE")
@CollectionTable(name = "CONFIG_MAPPING")
private Map<String, String> configAttributes;

不确定这是否会有所帮助,但我想我会分享

于 2012-12-12T15:25:45.390 回答
0

你不应该指定 --class

如果您希望实体的 controlNumbers 字段是字符串的集合,请不要将 --class 指定为 Receipt,只需将 --type 保留为 java.lang.String。如果您希望它是 Receipts 的集合,则不要指定 java.lang.String。

此外,您的 Receipt 实体必须已经存在才能正常工作。您不能引用尚不存在的类型。

一旦你的 ~.model.Receipt 对象存在,你应该能够运行:

字段集 --fieldName controlNumbers --type ~.model.Receipt

有关更多示例,请参阅http://static.springsource.org/spring-roo/reference/html-single/#command-index-field-set

于 2012-12-12T15:42:13.707 回答