Код: Выделить всё
Caused by: org.hibernate.MappingException: Unable to find column with logical name: userentity_id in org.hibernate.mapping.Table(userentity) and its related supertables and secondary tables at org.hibernate.cfg.Ejb3JoinColumn.checkReferencedColumnsType(Ejb3JoinColumn.java:839) at org.hibernate.cfg.BinderHelper.createSyntheticPropertyReference(BinderHelper.java:126) at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:104) at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processEndOfQueue(InFlightMetadataCollectorImpl.java:1750) at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processFkSecondPassesInOrder(InFlightMetadataCollectorImpl.java:1694) at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1623) at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:295) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1460) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1494) at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ... 42 more
Код: Выделить всё
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.Pattern;
import org.hibernate.validator.constraints.NotBlank;
import edu.remad.tutoring2.appconstants.RegexAppConstants;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Builder.Default;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Entity
@Table(name = "userentity")
@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
@Builder
public class UserEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank
@Pattern(regexp = RegexAppConstants.USERNAME_REGEX)
private String username;
@NotBlank
@Pattern(regexp = RegexAppConstants.EMAIL_REGEX)
private String email;
@NotBlank
private String password;
private Boolean enabled;
@Default
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "user_rules", joinColumns = {
@JoinColumn(name = "user_id", referencedColumnName = "id") }, inverseJoinColumns = {
@JoinColumn(name = "role_id", referencedColumnName = "id") })
private List roles = new ArrayList();
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private List tokens;
@NotBlank
@Pattern(regexp = RegexAppConstants.FIRST_NAME_REGEX)
private String firstName;
@NotBlank
@Pattern(regexp = RegexAppConstants.LAST_NAME_REGEX)
private String lastName;
@NotBlank
@Pattern(regexp = RegexAppConstants.GENDER_REGEX)
private String gender;
@NotBlank
@Pattern(regexp = RegexAppConstants.CELL_PHONE_REGEX)
private String cellPhone;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "userentity_id", referencedColumnName = "id")
private List addresses;
@Column(name = "creation_date", columnDefinition = "TIMESTAMP")
private LocalDateTime creationDate;
}
Код: Выделить всё
package edu.remad.tutoring2.models;
import java.util.Objects;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
@Entity
@Table(name = "Address")
public class AddressEntity {
/**
* the primary key for an address
*/
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
/**
* the street
*/
private String addressStreet;
/**
* house number
*/
private String addressHouseNo;
/**
* customer's zip code
*/
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "zipcode_id", referencedColumnName = "id")
private ZipCodeEntity addressZipCode;
/**
* Constructor
*
* @param addressStreet address's street
* @param addressHouseNo address's house number
* @param addressZipCode address's zipcode
*/
public AddressEntity(String addressStreet, String addressHouseNo, ZipCodeEntity addressZipCode) {
this.addressStreet = addressStreet;
this.addressHouseNo = addressHouseNo;
this.addressZipCode = addressZipCode;
}
/**
* Constructor
*
* @param id address's id
* @param addressStreet address's street
* @param addressHouseNo address's house number
* @param addressZipCode address's zipcode
*/
public AddressEntity(Long id, String addressStreet, String addressHouseNo, ZipCodeEntity addressZipCode) {
this.id = id;
this.addressStreet = addressStreet;
this.addressHouseNo = addressHouseNo;
this.addressZipCode = addressZipCode;
}
/**
* Constructor
*/
public AddressEntity() {
}
/**
* Gets Id
*
* @return Adress's Id
*/
public long getId() {
return id;
}
/**
* Gets street
*
* @return adress's street
*/
public String getAddressStreet() {
return addressStreet;
}
/**
* Sets street
*
* @param addressStreet address's street to set
*/
public void setAddressStreet(String addressStreet) {
this.addressStreet = addressStreet;
}
/**
* Gets house number
*
* @return address's house number
*/
public String getAddressHouseNo() {
return addressHouseNo;
}
/**
* Sets house number
*
* @param addressHouseNo address's house number
*/
public void setAddressHouseNo(String addressHouseNo) {
this.addressHouseNo = addressHouseNo;
}
public ZipCodeEntity getAddressZipCode() {
return addressZipCode;
}
public void setAddressZipCode(ZipCodeEntity addressZipCode) {
this.addressZipCode = addressZipCode;
}
@Override
public int hashCode() {
return Objects.hash(addressHouseNo, addressStreet, addressZipCode, id);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
AddressEntity other = (AddressEntity) obj;
return Objects.equals(addressHouseNo, other.addressHouseNo)
&& Objects.equals(addressStreet, other.addressStreet)
&& Objects.equals(addressZipCode, other.addressZipCode) && id == other.id;
}
@Override
public String toString() {
return "AddressEntity [id=" + id + ", addressStreet=" + addressStreet + ", addressHouseNo=" + addressHouseNo
+ ", addressZipCode=" + addressZipCode + "]";
}
}
Это сработало на другом сервере, но теперь на новом сервере разработки я получаю это исключение.
Подробнее здесь: https://stackoverflow.com/questions/785 ... to-find-co