多个数据库上的Hibernate映射(Oracle,Mysql)

时间:2018-11-19 08:43:41

标签: oracle hibernate hibernate-mapping hibernate-5.x

我希望我的Web应用程序在mysql和Oracle上运行,我使用Hibernate5。我的hibernate映射如下:

public class EventEntity {

    @Id
    @GeneratedValue(generator = "id_generator_EventEntity")
    @GenericGenerator(name = "id_generator_EventEntity", strategy = "native", parameters = {
            @Parameter(name="sequence_name", value="EVENT_SQ") 
    })
    private Long id;

由于我使用本机生成器,因此它在Mysql上使用自动增量,在Oracle上使用序列,这很好用。但是,我还定义了插入事件时应使用的顺序,但是在插入过程中出现以下错误:

2018-11-19 09:35:05.228 DEBUG [org.hibernate.SQL:94]  - 
    select
        hibernate_sequence.nextval 
    from
        dual 
2018-11-19 09:35:05.302 DEBUG [org.hibernate.engine.jdbc.spi.SqlExceptionHelper:126]  - could not extract ResultSet [n/a] 
java.sql.SQLSyntaxErrorException: ORA-02289: sequence does not exist
    at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:494)
    at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:446)
    ...

因此它忽略了我的提示,应该使用哪个序列,并且希望使用默认的序列(hibernate_sequence)。

请帮忙吗?

谢谢,
V。

///////////////////////////// UPDATE 1 ///////////////// /////////////
到目前为止,我的解决方案是降级到Hibernate 4并使用以下映射:

@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "id_generator_EventEntity")
@SequenceGenerator(name="id_generator_EventEntity", sequenceName = "EVENT_SQ")
private Long id;

Hibernate 5中是否可能没有解决方案?

0 个答案:

没有答案