Я использую hibernate и Mysql в проекте java для сохранения. У меня есть два объекта Сделки и Служба. Транзакция имеет отношение много к одному к сервису. Я хотел использовать не первичный столбец (SERVICE_CODE) типа VARCHAR из таблицы Service в качестве внешнего ключа в таблице транзакций. Но когда я делаю это, я получаю следующее исключение.Сопоставление объектов с использованием столбца не первичного ключа
SQL Error: 1452, SQLState: 23000
Cannot add or update a child row: a foreign key constraint fails.
SERVICE_CODE определен как непустой и уникальный в базе данных. Следующий пример отлично работает, если я использую первичный ключ из таблицы сервисов для сопоставления.
@Entity
@Table(name="Transaction")
public class Transaction {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="TRANSACTION_ID")
long transactionId;
@ManyToOne
@JoinColumn(name="SERVICE_CODE")
Service service;
}
@Entity
@Table(name="SERVICE")
public class Service {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="SERVICE_ID")
Long serviceId;
@Column(name="SERVICE_CODE")
String serviceCode;
}
Пожалуйста, откройте его, так как я отредактировал вопрос и добавил пример кода – Rishi