0
マップのあるクラスがあります。結合テーブルを使用してマッピングされます。Hibernate:マップ値の列名を定義する方法は?
@Entity
@Table(name = "Sources")
@Lazy(false)
public class Sources {
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "sources_lists", joinColumns = @JoinColumn(name = "list_id"))
@MapKeyColumn(name = "source_id")
public Map<Integer, Source> getSources() { return sources; }
public void setSources(Map<Integer, Source> sourcesList) { this.adSources = adSourcesList; }
private Map<Integer, Source> sources;
@Override
@Id @GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="id", unique = true, nullable = false, updatable = false)
public Integer getId() { return super.getId(); }
}
"フィールドリスト 'に" sources0_sources'がありません "という例外が表示されます。 'list_id'の列名を 'ソース'に変更すると動作しますが、本番環境ではこれを実行できません。
CREATE TABLE `sources` (
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`));
CREATE TABLE `source` (
`DTYPE` varchar(31) NOT NULL,
`id` int(11) NOT NULL AUTO_INCREMENT,
`className` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`));
CREATE TABLE `sources_lists` (
list_id` int(11) NOT NULL,
`source_id` int(11) NOT NULL,
KEY `FK54DCBD0B4307D0FC` (`source_id`),
KEY `FK54DCBD0B575FBECF` (`list_id`),
CONSTRAINT `FK54DCBD0B4307D0FC` FOREIGN KEY (`source_id`) REFERENCES `source` (`id`),
CONSTRAINT `FK54DCBD0B575FBECF` FOREIGN KEY (`list_id`) REFERENCES `sources` (`id`));
この '@Table(name =" Sources ")'を大文字にすることを意味しましたか?ソースは小文字にする必要があります。 '@Table(name =" sources ")' – Drew1208
大文字と小文字の両方を試しました。私が書いたように、DBの列名を 'list_id'から 'sources'に変更すると、Hibernateは文句を言うことがなくなります。問題はSources.getSources()メソッドにあります。 Hibernateは@ JoinColumn =(name = "list_id")アノテーションを無視するようです。 –