Seguindo meus estudos em JPA, comecei a implementar a persitência de um relacionamento OneToMany em que um Sushi possui um Type e um Type possui vários Sushis.
No banco de dados está assim:
CREATE SEQUENCE type_id_seq;
CREATE TABLE type
(
id SMALLINT DEFAULT NEXTVAL('type_id_seq'),
description varchar(20) NOT NULL,
CONSTRAINT type_pkey PRIMARY KEY (id)
);
CREATE SEQUENCE sushi_id_seq;
CREATE TABLE sushi
(
id SMALLINT DEFAULT NEXTVAL('sushi_id_seq') NOT NULL,
idtype SMALLINT NOT NULL,
name varchar(20) NOT NULL,
CONSTRAINT sushi_pkey PRIMARY KEY (id),
CONSTRAINT sushi_type_fkey FOREIGN KEY (idtype) references type
);
Então criei as duas classes modelos Type e Sushi:
@Entity
public class Type
{
@Id
@Column(insertable = false)
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
private String description;
//Representa todos os sushis que são desse tipo
@OneToMany
private Collection<Sushi> sushis;
...
}
@Entity
public class Sushi
{
@Id
@Column(insertable = false)
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
private String name;
@ManyToOne (cascade = CascadeType.PERSIST)
@JoinColumn (name = "idtype")
private Type type;
...
}
//Classe client
public class Client
{
/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException
{
BaseDao<Sushi> dao = new BaseDao<Sushi>();
//Cria dois sushis
Sushi hot = new Sushi();
hot.setName("SUSHI1");
Sushi fil = new Sushi();
fil.setName("SUSHI2");
//Cria um tipo
Type type = new Type();
type.setId(1);
type.setDescription("TIPO1");
//Faz a associação entre os dois objetos de sushi com o tipo criado
hot.setType(type);
fil.setType(type);
dao.create(hot);
dao.create(fil);
}
}
Quando executo ele dá o seguinte erro:
[TopLink Warning]: 2007.06.01 08:55:14.999–ClientSession(6330655)–Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2006.8 (Build 060830)): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: org.postgresql.util.PSQLException: ERRO: relação “sequence” não existeError Code: 0
Call:UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT + ? WHERE SEQ_NAME = ?
bind => [50, SEQ_GEN_SEQUENCE]
Query:DataModifyQuery()
Alguém pode me ajudar, pois não sei o q possa estar acontecendo…Desde já agradeço a atenção e colaboração de todos.