0
I have a strange behavior with some of my entities after migration from Hibernate 3 to Hibernate 5.2.17.Final and Spring from 3 to 5.0.5.RELEASE version
When I try to save an entity Organisation, I receive an error SqlExceptionHelper - Invalid column name 'contactInformation_id'.
Here is the Organisation class:
@Entity(name = "Organisation")
@Table(name = "organisation", uniqueConstraints = {@UniqueConstraint(name = "organisation_name_udx", columnNames = {"name"})})
@NoArgsConstructor
@EntityListeners(EntityCreateListener.class)
public class Organisation implements Serializable, PatientListEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Getter
@Setter
private Long id;
@Length(max = MAX_NAME_LENGTH)
@NotEmpty
@Getter
@Setter
private String name;
@Embedded
@Valid
private PrimaryContact primaryContact;
@Getter
@OneToMany(mappedBy = "organisation", orphanRemoval = true, cascade = CascadeType.ALL)
@MapKeyColumn(name = "application_code")
@JsonManagedReference
private Map<ApplicationEnum, ApplicationDmeProvider> applicationDmeProviderMap = new HashMap<>();
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@Fetch(FetchMode.SELECT)
@JoinColumn(name = "image_id", nullable = true)
@Getter
@Setter
private Image logo;
@ManyToMany
@Fetch(FetchMode.SELECT)
@JoinTable(
name = "billing_plan_organisation",
joinColumns = {@JoinColumn(name = "organisation_id")},
inverseJoinColumns = {@JoinColumn(name = "billing_plan_id")})
@Getter
private Set<BillingPlan> billingPlans = new HashSet<>();
}
Here is the *PrimaryContact* class:
@Embeddable
public class PrimaryContact extends Person implements Serializable {
@Valid
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
@JoinColumn(name = "primary_contact_information_id")
private ContactInformation contactInformation;
}
Here is the *ContactInformation* class:
@Entity(name = "ContactInformation")
@Table(name = "contact_information")
@Data
@NoArgsConstructor
public class ContactInformation implements Serializable {
public static final int MAX_PHONENUMBERS = 5;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Valid
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "address_id")
private Address address = new Address();
@RFCEmail
@Size(max = RFCEmailValidator.EMAIL_TOTAL_MAX_LENGTH)
private String email = "";
@Valid
@Embedded
@AttributeOverrides({@AttributeOverride(name = "number", column = @Column(name = "phone_number_0")),
@AttributeOverride(name = "type", column = @Column(name = "phone_type_0"))})
private PhoneNumber phoneNumber0;
@Valid
@Embedded
@AttributeOverrides({@AttributeOverride(name = "number", column = @Column(name = "phone_number_1")),
@AttributeOverride(name = "type", column = @Column(name = "phone_type_1"))})
private PhoneNumber phoneNumber1;
@Valid
@Embedded
@AttributeOverrides({@AttributeOverride(name = "number", column = @Column(name = "phone_number_2")),
@AttributeOverride(name = "type", column = @Column(name = "phone_type_2"))})
private PhoneNumber phoneNumber2;
@Valid
@Embedded
@AttributeOverrides({@AttributeOverride(name = "number", column = @Column(name = "phone_number_3")),
@AttributeOverride(name = "type", column = @Column(name = "phone_type_3"))})
private PhoneNumber phoneNumber3;
@Valid
@Embedded
@AttributeOverrides({@AttributeOverride(name = "number", column = @Column(name = "phone_number_4")),
@AttributeOverride(name = "type", column = @Column(name = "phone_type_4"))})
private PhoneNumber phoneNumber4;
@OneToOne
@JoinColumn(name = "time_zone_code")
private TimeZone timeZone;
}