首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JPA持久化1列表

使用JPA持久化1列表
EN

Stack Overflow用户
提问于 2011-07-15 14:25:27
回答 2查看 2.4K关注 0票数 3

我有一张只有一列的桌子。是身份证

我如何在JPA中坚持它?

我尝试过entityManager.persist(新的OneColumnTable());

它抛出一个PersistenceException

代码语言:javascript
复制
Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-6023] (Eclipse Persistence Services - 2.2.0.v20110202-r8913): org.eclipse.persistence.exceptions.QueryException
Exception Description: **The list of fields to insert into the table [DatabaseTable(OneColumnTable)] is empty.  You must define at least one mapping for this table.**
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:747)
    at com.sun.enterprise.container.common.impl.EntityManagerWrapper.flush(EntityManagerWrapper.java:418)

我该怎么做呢?

更新

代码语言:javascript
复制
@Entity
@Table(name = "OneColumnTable")
public class OneColumnTable implements Serializable{
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name = "OneColumn")
    private Integer oneColumn;

    public OneColumnTable() {

    }

    public Integer getOneColumn() {
        return oneColumn;
    }

    public void setOneColumn(Integer oneColumn) {
        this.oneColumn= oneColumn;
    }

}

代码语言:javascript
复制
USE [myDB]
GO
/****** Object:  Table [dbo].[OneColumnTable]    Script Date: 07/15/2011 12:10:56 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[OneColumnTable](
    [OneColumn] [bigint] IDENTITY(1,1) NOT NULL,
PRIMARY KEY CLUSTERED 
(
    [OneColumn] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
EN

回答 2

Stack Overflow用户

发布于 2011-07-15 14:59:04

DataNucleus可以很好地保持这个类。对于某些RDBMS来说,INSERT语句必须是特定类型的,当没有指定列时(因为您的唯一列是在数据存储中生成的),这大概是它无法做到的。对于SQLServer,任何适当的JPA实现都应该生成的语句是"INSERT INSERT {tbl}默认值“。也许能得到一个这样的实现?

票数 1
EN

Stack Overflow用户

发布于 2011-07-15 15:03:33

@GeneratedValue(strategy=GenerationType.IDENTITY)表示依赖于database support for IDENTITY columns的排序策略的使用。

IDENTITY列的概念并不存在于所有数据库中。例如,Apache和Oracle不支持这一点,而MySQL、MSSQL (通常是Sybase)支持身份排序策略。您应该使用数据库支持的排序策略。为便于移植,请选择AUTOTABLE排序策略。在大多数JPA提供程序中,AUTO策略是作为TABLE排序策略实现的,因为所有数据库都支持创建用于维护序列值的表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6708512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档