使用自动增量主键从实体生成表

时间:2014-09-19 14:46:18

标签: hibernate jpa jpa-2.0

在我们的应用程序中,我们从JPA实体生成数据库表。我需要创建一个实体将生成一个具有自动递增主键的表。随后,我需要能够在不存在PK的情况下执行纯SQL插入(在Hibernate之外)。

E.g。 INSERT INTO ApplicationLog VALUES ('logtime', 'logpackage' ,'logclass','method', 'message')

我尝试过一些像GenerationType.IDENTITY,AUTO,TABLE这样的策略,但是当我调用上面的insert语句时都没有。

@Entity
public class ApplicationLog {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(name="logtime")
    private String datetime;
    @Column(name="logpackage")
    private String _package;
    @Column(name="logclass")
    private String _class;
    private String method;
    private String message;
    ...
}

我会收到以下错误:

ERROR:  invalid input syntax for integer: "asdf"
LINE 1: INSERT INTO ApplicationLog VALUES ('asdf', 'ee' ,'cc','33', ...

我的应用程序必须支持SqlServer(2012+),Postgres(9+)和Oracle(11g +),因此应用程序需要尽可能保持与数据库无关。

作为一些背景信息,我的设置只是允许使用Log4j的JDBCAppender,因此我可以使用Hibernate登录数据库并在应用程序中读取记录(用于显示)。 / p>

0 个答案:

没有答案