java - 覆盖@CollectionTable

标签 java hibernate jpa

我需要覆盖 JPA 中的集合表吗?也许有人有想法

 public class nationality{
       @Embedded
       @AttributeOverrides({
              @AttributeOverride(name="language.language", column = @Column(name="code_lang")) })
       private Language language;
    .....

语文课

@Embeddable
public class Language{
  @ElementCollection(fetch = FetchType.Eager)
  @CollectionTable(name="nat", joinColumns = @JoinColumn(name = "id"))
  private Collection<LanguageObj> language;
...
}

这是可行的,但@CollectionTable 链接必须出现在国籍类中。如何做到这一点?

Language 类必须被从不同表中获取数据的其他类重用。 问题是表已经存在数据,所以无法编辑表 比如从表country中获取数据的class country

public class country{
       @Embedded
       @AttributeOverrides({
              @AttributeOverride(name="language.language", column = @Column(name="code_country")) })
       private Language language;
    .....
}

最佳答案

解决办法
总体思路是:
1.在可嵌入对象中用@ElementCollection
注解集合字段 2. 在实体中使用@CollectionTable 注释collection getter。 getter 应该转发给 embeddable 的 getter。对于每个实体,您可以在 @CollectionTable 注释中指定单独的表名称

enum DayOfWeek {
    MONDAY,TUESDAY,...
}

@Embeddable
class ScheduleProperties {
    ...
    @ElementCollection
    private List<DayOfWeek> daysOfWeek;
    ...
    public List<DayOfWeek> getDaysOfWeek() {
        return daysOfWeek;
    }
}

@Entity
class SomeEntity {
    ...
    @Embedded
    private ScheduleProperties embd = new ScheduleProperties();
    ...
    @CollectionTable(name="some_entity_days_of_week")
    public List<DayOfWeek> getDaysOfWeek() {
        return embd.getDaysOfWeek();
    }
}

@Entity
class AnotherEntity {
    ...
    @Embedded
    private ScheduleProperties embd = new ScheduleProperties();
    ...
    @CollectionTable(name="another_entity_days_of_week")
    public List<DayOfWeek> getDaysOfWeek() {
        return embd.getDaysOfWeek();
    }
}

关于java - 覆盖@CollectionTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9110770/

相关文章:

java - 在同一个模拟上使用多个 ArgumentMatchers

java - Spring Boot,maven编译错误

java - 组织.hibernate.TransactionException : Unable to locate JTA UserTransaction

java - spring boot 应用程序上的自定义 JPA 获取大小不适用于 IBM 自由核心

java - 如何通过 JPA 持久化从 JTable 检索的实体对象?

java - Log4J 2 配置监控和按位比较

java - 测试类中的 Jersey 测试 @Autowired 字段为空

java - [java bean]hibernate Session 破坏了 java bean?

java - Oracle 和 PostgreSQL 中针对 Java(Hibernate) Float 类型的正确列类型

java - JPA ManyToMany 持续存在