我有一个可以拥有Wallet的用户。现在,当用户创建Wallet时,我希望为他提供一个在该Wallet上创建事务处理的选项。因此,在该表单上,我希望有下一个字段,提示用户插入:
一个月一次,一个月一次,一个月二次,一个月三次
到目前为止,我在Spring有这个:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "transaction_id")
private Integer id;
private double amount;
private String note;
@DateTimeFormat(pattern = "dd-MM-yyyy")
@Column(name = "date")
private Date date;
但我有字段category
的问题。我想提示用户从下拉菜单中选择一个类别从列表中。但如何创建一个字段categories
,将与类别名称填充?
我尝试了:
@Column(name = "categories")
private List categories;
但我得到了:
Could not determine type for: java.util.List, at table: transaction, for columns: [org.hibernate.mapping.Column(categories)]
1条答案
按热度按时间igetnqfo1#
SpringJPA允许你用几种不同的方法来处理这个问题,因为你没有指定一个类别是什么类型,我假设你希望它是一个String。
@元素集合
第一种,也是最简单的,通常推荐的方法是使用
@ElementCollection
,如果你的分类已经很好地固定了,你甚至可以使用enum
。这样,JPA将在数据库中生成名为
transaction_categories
的第二个表。您不必为该表创建实体或其他任何东西,一切都在幕后处理。JsonB
如果您正在使用postgres 10+(我认为),您可以将列转换为JSON对象。您将需要在Gradle中使用以下依赖项。
您需要更改您的模型,如下所示:
只要这个列表不会变得庞大,它就是一个相当不错的解决方案。