簡體   English   中英

使用 JPA 持久化 1 列表

[英]persist a 1 column table using JPA

我有一張只有一列的表格。 這是一個ID

如何使用 JPA 堅持它?

我試過entityManager.persist(new OneColumnTable());

它拋出一個 PersistenceException

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)

我該怎么做?

更新

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

}

桌子

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]

DataNucleus 可以保持 class 正常。 問題是對於某些 RDBMS,當沒有指定列時,INSERT 語句必須屬於特定類型(因為在數據存儲中生成了唯一的列),這可能是它無法做到的。 在 SQLServer 的情況下,任何體面的 JPA 實現應該生成的語句是“INSERT INTO {tbl} DEFAULT VALUES”。 也許得到一個實現?

@GeneratedValue(strategy=GenerationType.IDENTITY)指示使用依賴於數據庫對IDENTITY的支持的排序策略。

IDENTITY列的概念並非存在於所有數據庫中。 例如,Apache Derby 和 Oracle 不支持這一點,而 MySQL、MSSQL(通常是 Sybase)支持 IDENTITY 排序策略。 您應該使用數據庫支持的排序策略。 為了可移植性,請選擇AUTOTABLE排序策略。 在大多數 JPA 提供程序中, AUTO策略被實現為TABLE排序策略,因為所有數據庫都支持創建用於維護序列值的表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM