2
我創建了以下情形列名:JPA:@ElementCollection和InheritanceType.TABLE_PER_CLASS - >複製
@javax.persistence.Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class MyEntity implements Serializable{
@Id
@GeneratedValue
protected Long id;
...
@ElementCollection
@CollectionTable(name="ENTITY_PARAMS")
@MapKeyColumn (name = "ENTITY_KEY")
@Column(name = "ENTITY_VALUE")
protected Map<String, String> parameters;
...
}
除了:
@javax.persistence.Entity
public class Sensor extends MyEntity{
@Id
@GeneratedValue
protected Long id;
...
// so here "protected Map<String, String> parameters;" is inherited !!!!
...
}
那麼運行這個例子,沒有空桌,創建並且我得到以下消息:
WARNUNG: Got SQLException executing statement "CREATE TABLE ENTITY_PARAMS (Entity_ID BIGINT NOT NULL, ENTITY_VALUE VARCHAR(255), ENTITY_KEY VARCHAR(255), Sensor_ID BIGINT NOT NULL, ENTITY_VALUE VARCHAR(255))": com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Duplicate column name 'ENTITY_VALUE'
我也嘗試覆蓋Sens上的屬性或類...
@AttributeOverrides({
@AttributeOverride(name = "ENTITY_KEY", column = @Column(name = "SENSOR_KEY")),
@AttributeOverride(name = "ENTITY_VALUE", column = @Column(name = "SENSOR_VALUE"))
})
......但同樣的錯誤。
編輯:
好吧,我已經發現,與「聯合」,以及與繼承策略「SINGLE_TABLE」一切工作正常。此外,它似乎與EclipseLink版本無關 - 我試過1.3和2.0.1。
END_EDIT
任何人可以幫助我嗎?