0
@ManyToMany
@JoinTable(schema = "cust_tables", joinColumns = @JoinColumn(name = "item_id"))
public Map<Attribute, Option> attributeValues;

Attribute はプロパティ名で、option はその属性の有効な値です。

EclipseLink は現在、テーブルに対して次の DDL を生成します。

CREATE TABLE `items_options` (
  `attributes_id` bigint(20) NOT NULL,
  `item_id` bigint(20) NOT NULL,
  `attributes_KEY` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`item_id`,`attributes_id`),
  KEY `FK_items_options_attributes_id` (`attributes_id`),
  KEY `FK_items_options_attributes_KEY` (`attributes_KEY`),
  CONSTRAINT `FK_items_options_attributes_id` FOREIGN KEY (`attributes_id`) REFERENCES `options` (`id`),
  CONSTRAINT `FK_items_options_attributes_KEY` FOREIGN KEY (`attributes_KEY`) REFERENCES `attributes` (`id`),
  CONSTRAINT `FK_items_options_item_id` FOREIGN KEY (`item_id`) REFERENCES `items` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

結合テーブルで、列名「attributes_id」と「attributes_KEY」を変更する必要があります。これを指定するにはどうすればよいですか?

4

1 に答える 1

1

列属性の名前を変更するには、アノテーション @MayKeyJoinColumn を試してください。このようなもの:

@ManyToMany
@JoinTable(schema = "cust_tables", joinColumns = @JoinColumn(name = "item_id"))
@MapKeyJoinColumn(name="ATTRIBUTE")
public Map<Attribute, Option> attributeValues;
于 2013-02-08T09:19:49.087 に答える