Hi
This is my first post on this forum so I would like to say HI to EVERYBODY.
I have classes (listed below). After run the MappingException is thrown:
Quote:
Foreign key (FK393AF2E2895B615:text_language_value_impl1 [language])) must have same number of columns as the referenced primary key (text_language_value [text_id,language])
Could anyone tell me why, or what I'm doing wrong?
Code:
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
@Table(name="texts")
public abstract class Text {
@Id
@Column(name="text_id", updatable=false, nullable=false)
private long id;
@OneToMany(orphanRemoval=true, cascade={CascadeType.ALL}, fetch=FetchType.LAZY)
@JoinColumn(name="text_id")
private List<TextLanguageValue> languageTexts = new ArrayList<TextLanguageValue>();
String description;
protected Text(){}
...
}
Code:
@Entity
@Table(name="obj1_texts")
public class TextImpl1 extends Text {
private TextImpl1(){
super();
}
}
Code:
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
@Table(name="text_language_value")
public abstract class TextLanguageValue implements Serializable {
@Id
@ManyToOne(optional=false, cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@JoinColumn(name="text_id")
private Text text;
@Id
@Column(name="language")
private String language;
private String value;
protected TextLanguageValue(){
}
public TextLanguageValue(Text text, String language) {
super();
this.text = text;
this.language = language;
}
protected abstract TextLanguageValue createTextLanguageValue(String language);
public TextLanguageValue getLanguageText(String language){
for (TextLanguageValue languageText : languageTexts) {
if(languageText.getLanguage().equals(language))
return languageText;
}
TextLanguageValue languageText = createTextLanguageValue(language);
this.languageTexts.add(languageText);
return languageText;
}
...
}
Code:
@Entity
@Table(name="text_language_value_impl1")
public class TextLanguageValueImpl1 extends TextLanguageValue {
private TextLanguageValueImpl1(){
super();
}
public TextLanguageValueImpl1(Text text, String language) {
super(text, language);
}
}
Regards servee