này là các đơn vị của tôi:JPA Nhiều-to-Nhiều Tham bảng thực thể có chìa khóa hợp chất "id rỗng tạo ra"
public class Account extends AbstractEntity<Long> {
@Id
@SequenceGenerator(name = "accountSequence", sequenceName = "SQ_ACCOUNTS", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "accountSequence")
@Column(name = "ACC_ID", nullable = false)
private Long id;
...
}
public class Integration extends AbstractEntity<Long> {
@Id
@SequenceGenerator(name = "integrationSequence", sequenceName="SQ_INTEGRATIONS", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "integrationSequence")
@Column(name = "INT_ID", nullable = false)
private Long id;
...
public void addIntegration(Integration integration) {
IntegrationAccount association = new IntegrationAccount();
// This does not help
//association.setIntAccountsPK(new IntAccountsPK(integration.getId(), this.getId()));
association.setAccount(this);
association.setIntegration(integration);
this.integrationAccounts.add(association);
integration.getIntAccountsCollection().add(association);
}
}
Và đây là thực thể cho tham gia bảng
@Entity
@Table(name = "INT_ACCOUNTS")
public class IntegrationAccount {
@EmbeddedId
protected IntAccountsPK intAccountsPK;
@JoinColumn(name = "ACC_ID", referencedColumnName = "ACC_ID", insertable = false, updatable = false)
@ManyToOne
private Account account;
@JoinColumn(name = "INT_ID", referencedColumnName = "INT_ID", insertable = false, updatable = false)
@ManyToOne
private Integration integration;
...
}
@Embeddable
public class IntAccountsPK implements Serializable {
@Column(name = "INT_ID", nullable = false)
private Long intId;
@Column(name = "ACC_ID", nullable = false)
private Long accId;
...
}
Và khi tôi làm :
account.addIntegrations(integrations.getTarget());
account.setCustomer(customer);
accountService.save(account);
tôi nhận này trong nhật ký của tôi Nguyên nhân: org.hibernate.id.IdentifierGenerationException: id rỗng tạo cho: class com.dhl.dcc.domain.IntegrationAccount
Tôi không có nhiều kiến thức về loại ánh xạ này, bạn có thể vui lòng cho tôi biết cách cải thiện ánh xạ này (thực thể cho bảng kết nối phải được giữ nguyên) và cách lưu tài khoản với tích hợp liên quan? Cảm ơn.
Như một sự quyến rũ như bạn đã nói, cảm ơn bạn. Tôi đã phải loại bỏ "insertable = false, updatable false". – DominikM