使用EclipseLink将唯一标识符列插入表中

时间:2013-06-24 10:04:24

标签: java mysql jpa eclipselink spring-data-jpa

我有一个实体:

@Entity
public class MyEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = Columns.ID)
    private Long id;

    // getter & setter
}

然后,我创建了一个实体MyEntity my = new MyEntity();的实例,并希望使用DAO(使用Spring Data for JPA)保存它 - dao.save(my);。我得到以下例外:

Caused by: Exception [EclipseLink-6023] 
(Eclipse Persistence Services - 2.4.0.v20120608-r11652): 
org.eclipse.persistence.exceptions.QueryException
Exception Description: The list of fields to insert into the table
[DatabaseTable(my_entity)] is empty.  
You must define at least one mapping for this table.
Query: InsertObjectQuery(null)

当我向具有默认值

的实体添加另一个无用的列时
private int nothing = 6;

异常消失。有什么解决方案吗?

This topic对我没有帮助。我使用EclipseLink + MySQL + Spring Data。

1 个答案:

答案 0 :(得分:3)

这是因为您没有字段,并且正在使用生成的ID,因此无需插入任何内容。您需要添加另一个字段,或者需要使用TABLE ID生成而不是IDENTITY(我建议不要使用IDENTITY,因为它不支持预分配)。