Hibernate mapping on multiple databases (Oracle, Mysql)

85 Views Asked by At

I want my web application to run on mysql and Oracle, I use Hibernate 5. My hibernate mapping is as follows:

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;

As I use native generator so it uses autoincrement on Mysql and sequence on Oracle which works fine. However I also defined what sequence should be used when inserting an event but I have the following error during insertion:

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)
    ...

So it ignores my hint which sequence should be used and it wants to use the default one (hibernate_sequence).

Any help please?

Thanks,
V.

////////////////////////////// UPDATE 1 //////////////////////////////
My solution so far is to downgrade to Hibernate 4 and use the following mapping:

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

Is it possible that there isn't a solution in Hibernate 5?

0

There are 0 best solutions below