繁体   English   中英

JPA Hibernate - 如何从字符串数组“String[]”创建表

JPA Hibernate - How to create a table from an array of strings “String[]”

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有以下实体可以正常工作并将所有列存储在 newapplicationmodel 的表中,但我希望private String[] emails是它自己的实体/表(类似于 @OneToMany,但 @OneToMany 正在寻找一组对象有键/值。我只有字符串值)

@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class newapplicationmodel {
    
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="applicationid")
    private Long applicationid;

    @Column(name="propertyid")
    private String propertyid;

    @Column(name="moveindate")
    private String moveindate;

    private String[] emails;

}
2 个回复

您可以使用 Set 或 List 而不是 Array 并使用 @ElementCollection 对其进行注释。
这将生成一个名为“newapplicationmodel_emails”的包含电子邮件的表。
您可以使用额外的 @CollectionTable(name="someName") 更改表名

几个链接:
https://javaee.github.io/javaee-spec/javadocs/javax/persistence/ElementCollection.html
https://javaee.github.io/javaee-spec/javadocs/javax/persistence/CollectionTable.html
https://en.wikibooks.org/wiki/Java_Persistence/ElementCollection#Basic_Collections

您需要@ElementCollection将电子邮件保存在单独的表中

@ElementCollection
@CollectionTable(name = "emails", joinColumns = @JoinColumn(name = "applicationid"))
//where table name is "emails" and join column name is "applicationid"
@Column(name = "email")
private Set<String> emails = new HashSet<>();

另一种方法是使用@Converter并将电子邮件列表保存为逗号分隔的文本

@Column(name = "emails")
@Convert(converter = EmailsToStringConverter.class)
private List<String> emails;

@Converter
public class EmailsToStringConverter implements AttributeConverter<List<String>,String>{
    @Override
    public String convertToDatabaseColumn(List<String> attribute) {
        return attribute == null ? null : StringUtils.join(attribute, ",");
    }

    @Override
    public List<String> convertToEntityAttribute(String columnValue) {
        if (StringUtils.isBlank(columnValue)) {
            return Collections.emptyList();
        }

        return Arrays.asList(columnValue.split(","));
    }
}
2 如何从字符串数组C创建一个字符串

我正在学习数组,想知道是否有人可以帮助我。 我有一个字符串数组,需要创建一个新字符串,它是所有数组元素的串联。 我遇到的问题是我只能打印数组中的第一个字符串,而不是全部。 我知道数组中每个字符串的末尾都有一个null,所以我将如何解决该问题? 也许二维数组? 顺便说一句,我不允许使用s ...

4 如何创建一张表的多个映射? (jpa 休眠)

我在 Spring Boot 中创建了一个应用程序。 我想为一张表进行多个实体映射。 一个实体在没有任何连接的情况下检索表,另一个实体通过连接检索表。 这是表架构: 书: {"id":1, "title":"math1", "author_id":1} 作者: {"id":1, "name": ...

5 如何在 Hibernate/JPA 中的两个表之间创建中间表?

表 1:计算机表 表 2:许可证表: 表 3:待创建。 这是中级,应该只有两个字段 计算机 ID | 许可证编号 许可证 ID 可以链接到多个计算机 ID,多个计算机 ID 可以有多个许可证。 在我们的例子中,计算机和许可证数据已经存在。 我们运行一个作业来填充中间表,即选择计算机 id ...

7 如何映射列表使用 Hibernate/JPA 而没有额外的连接表?

我问的问题很简单,但似乎不可能找到答案。 我正在使用 Spring Data JPA 并且我有一个 JDBC/JPA DataSource (它是 PostgreSQL,但这无关紧要),它预先加载了数据,我只是想从中读取数据。 如何构建我的 POJO 以便我可以拥有一个不需要额外连接表的List& ...

10 从字符串数组创建表,以便每个字符串都是其自己的列,而每一行都是该字符串的字母

我不知道问这个问题的正确方法,因为我已经搜索并尝试实施其他方法而没有运气。 Javascript不是我的强项,所以请多多包涵。 我有一个输入看起来像,每个条目可以具有不同的宽度: #abcde#fghij#klmno 我根据字符分割输入,最后得到一个看起来像这样的数组: ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM