Code: Select all
CREATE TABLE `client` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `member` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`key` varchar(255) NOT NULL,
`name` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY (`key`)
);
CREATE TABLE `client_member` (
`client_id` bigint NOT NULL,
`member_key` varchar(255),
UNIQUE KEY `client_id` (`client_id`,`user_key`),
FOREIGN KEY (`client_id`) REFERENCES `client` (`id`),
FOREIGN KEY (`member_key`) REFERENCES `member` (`key`)
);
< /code>
Wir wollten die Entitäten wie SO: < /p>
abbilden@Entity
@Table(name = "client")
class Client(
@Id
@Access(AccessType.PROPERTY)
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false, updatable = false)
var id: Long?,
@Column(name = "name", nullable = false)
var name: String,
@ManyToMany
@JoinTable(
name = "client_member",
joinColumns = [JoinColumn(
name = "client_id",
referencedColumnName = "id",
nullable = false
)],
inverseJoinColumns = [JoinColumn(
name = "member_key",
referencedColumnName = "key",
nullable = false
)]
)
var clientMembers: MutableSet,
)
@Entity
@Table(name = "member")
class Member(
@Id
@Access(AccessType.PROPERTY)
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false, updatable = false)
var id: Long?,
@NaturalId
@Column(name = "key", unique = true, nullable = false, updatable = false)
var key: String,
@Column(name = "name", nullable = false)
var name: String,
)
@Entity
@Table(name = "client_member")
class ClientMember(
@EmbeddedId
var id: ClientMemberCompositeKey
) {
@Embeddable
class ClientMemberCompositeKey(
@ManyToOne
@JoinColumn(
name = "client_id",
referencedColumnName = "id",
nullable = false
)
var client: Client,
@ManyToOne
@JoinColumn(
name = "member_key",
referencedColumnName = "key",
nullable = false
)
var member: Member,
)
}
org.hibernate.engine.jdbc.spi.sqlexceptionHelper: Eine untergeordnete Zeile kann nicht hinzufügen oder aktualisieren: Eine fremde Schlüsselbeschränkung schlägt fehl (fehl
Code: Select all
client_member
Code: Select all
member_key
Code: Select all
key
Nach dem Debuggen haben wir festgestellt class = "Lang-SQL PrettyPrint-Override">
Code: Select all
INSERT INTO `client_member` (`client_id`, `member_key`) VALUES (14, 183)
< /code>
183
Gibt es eine Möglichkeit, dies zu beheben, ohne dem Mitglied Entität eine Zuordnung von Clients hinzufügen zu müssen? Wir möchten es nach Möglichkeit unidirektional halten