2016-03-31 12 views
0

İçinde bir haritanız var. Birleştirme tablosunun kullanımı ile eşleştirilir. "Bilinmeyen sütun 'sources0_.sources' 'alan listesinde' in":Hazırda bekletme: Harita değerleri sütun adı nasıl tanımlanır?

@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(); } 
} 

aşağıdaki özel durum alırsınız. 'list_id' sütun adını 'kaynaklara' değiştirdiğimde işler işe yaramıyor ama bunu üretimde yapamıyorum.

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`)); 
+0

Bunu kullanmak için '@Table (name = "Sources") 'i kullanmak istemişsiniz. Kaynakların küçük olması gerektiği gibi görünüyor. '@Table (name =" sources ")' – Drew1208

+0

Hem alt hem de büyük harf denedim. Yazdığım gibi, 'list_id' kaynağından 'sources.' Dizinindeki sütun adını değiştirdiğimde Hibernate, derhal durur. Bu nedenle sorun Sources.getSources() yöntemidir. Hibernate ignores @ JoinColumn = (name = "list_id") ek açıklama gibi görünüyor. –

cevap

0

Ben sorunu sütun ile olmadığını anladı, ama başka somethings ile:

Masalarız onun kimliğiyle Kaynak nesneleri eşlemek istediğiniz ve Hazırda birleşim tablosu içinde 3 sütun olduğunu varsayar: üst nesne kimliği (Kaynaklar sınıfı, liste_konu sütunu), nesne kimliği (Kaynak sınıfı, source_id sütunu) ve harita anahtarı için ayrı bir sütun. Başka bir soru açarak, kimliğine göre Hazırda Bekletme nesnesini eşlemenin yolunun ne olduğunu sormak istiyorum.

İlgili konular