如何在休眠中为@ElementCollection 设置表名

Posted

技术标签:

【中文标题】如何在休眠中为@ElementCollection 设置表名【英文标题】:How to set table name for @ElementCollection in hibernate 【发布时间】:2016-12-03 09:13:37 【问题描述】:

我正在使用

public class UserTask extends BaseObject implements Serializable 
    
    @ElementCollection(targetClass = java.lang.String.class) 
    private List<String> userTaskMessage = new ArrayList<>();
   
   .
   .
   .
   .

Hibernate 生成表,名称为usertask_usertaskmessage

如何设置我的名字?例如my_table_example

【问题讨论】:

【参考方案1】:

使用注解@CollectionTable(name="your_table_name")

【讨论】:

【参考方案2】:

JPA:

@Entity
@Table(name = "SERVICES")
public class Service 

    @Id
    @Column(name = "ID") 
    private Long id;

    @ElementCollection(fetch = FetchType.LAZY)
    @CollectionTable(name = "SERVICE_LINKED_CODES", joinColumns = @JoinColumn(name = "SERVICE_ID"))
    @Column(name = "CODE") 
    private List<String> linkedCodes;


数据库中的架构:

CREATE TABLE SERVICES  ID BIGINT ;
CREATE TABLE SERVICE_LINKED_CODES  SERVICE_ID BIGINT, CODE VARCHAR(255) ;

【讨论】:

以上是关于如何在休眠中为@ElementCollection 设置表名的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Hibernate 获得 @ElementCollection 的总和?

是否可以通过 ElementCollection 查询 JPA 实体,其中 ElementCollection 包含给定元素集中的所有元素?

在休眠中为同一实体的 MySQL 和 SQL 服务器配置差异表名称

如何使用 @ElementCollection 进行 Set<Integer> 映射?

@ElementCollection 的 JPA 延迟加载

如何在Android平板电脑POWER按钮菜单中添加休眠功能