I try to generate a Liquibase init Changelog with JPA Buddy.
Somehow, JPA Buddy is ignoring tables declared with @CollectionTable. Is it a feature that JPA Buddy does not cover?
Here is my definition:
@ElementCollection(targetClass = CareerLevel.class)
@Enumerated(EnumType.STRING)
@CollectionTable(name = "inventory_bundle_career_level",
joinColumns = {@JoinColumn(name = "inventory_bundle_id", columnDefinition = "CHAR(36)")})
@Column(name = "career_level", columnDefinition = "VARCHAR(50)")
private List<CareerLevel> careerLevel = new ArrayList<>();
Which version of JPA Buddy are you using? I'm using the latest version of JPA Buddy: 2023.2.3 and JPA Buddy generates a table for @CollectionTable correctly. For example, I created the following model based on the code snippet you provided:
@Entity
@Table(name = "inventory_bundle")
public class InventoryBundle {
@Id
@Column(name = "id", columnDefinition = "CHAR(36)")
private String id;
@ElementCollection(targetClass = CareerLevel.class)
@Enumerated(EnumType.STRING)
@CollectionTable(
name = "inventory_bundle_career_level",
joinColumns = {
@JoinColumn(name = "inventory_bundle_id", columnDefinition = "CHAR(36)")
})
@Column(name = "career_level", columnDefinition = "VARCHAR(50)")
private List<CareerLevel> careerLevel = new ArrayList<>();
}
public enum CareerLevel {
ENTRY_LEVEL,
JUNIOR,
MID_LEVEL,
SENIOR,
EXECUTIVE
}
And JPA Buddy generated the following script for it:
CREATE TABLE inventory_bundle
(
id CHAR(36) NOT NULL,
CONSTRAINT pk_inventory_bundle PRIMARY KEY (id)
);
CREATE TABLE inventory_bundle_career_level
(
inventory_bundle_id CHAR(36) NOT NULL,
career_level VARCHAR(50)
);
ALTER TABLE inventory_bundle_career_level
ADD CONSTRAINT fk_inventory_bundle_career_level_on_inventory_bundle FOREIGN KEY (inventory_bundle_id) REFERENCES inventory_bundle (id);
This script matches exactly what Hibernate ddl-auto generates. Maybe your model is slightly different? I would appreciate a more detailed description of the case so that I can check it out 🙂