Getting field of type bytea in helper table when using GenerationType.IDENTITY
Posted
by
dtrunk
on Stack Overflow
See other posts from Stack Overflow
or by dtrunk
Published on 2012-06-29T21:49:35Z
Indexed on
2012/06/30
15:16 UTC
Read the original article
Hit count: 224
I'm creating my db scheme using Hibernate. There's a Table called "tbl_articles" and another one called "tbl_categories". To have a n-n relationship a helper table ("tbl_articles_categories") is needed.
Here are all necessary Entities:
@Entity
@Table( name = "tbl_articles" )
public class Article implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@Column( nullable = false )
@GeneratedValue( strategy = GenerationType.IDENTITY )
private Integer id;
// other fields...
public Integer getId()
{
return id;
}
public void setId( Integer id )
{
this.id = id;
}
// other fields...
}
@Entity
@Table( name = "tbl_categories" )
public class Category implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@Column( nullable = false )
@GeneratedValue( strategy = GenerationType.IDENTITY )
private Integer id;
// other fields
public Integer getId()
{
return id;
}
public void setId( Integer id )
{
this.id = id;
}
// other fields...
}
@Entity
@Table( name = "tbl_articles_categories" )
@AssociationOverrides({
@AssociationOverride( name = "pk.article", joinColumns = @JoinColumn( name = "article_id" ) ),
@AssociationOverride( name = "pk.category", joinColumns = @JoinColumn( name = "category_id" ) )
})
public class ArticleCategory
{
private ArticleCategoryPK pk = new ArticleCategoryPK();
public void setPk( ArticleCategoryPK pk )
{
this.pk = pk;
}
@EmbeddedId
public ArticleCategoryPK getPk()
{
return pk;
}
@Transient
public Article getArticle()
{
return pk.getArticle();
}
public void setArticle( Article article )
{
pk.setArticle( article );
}
@Transient
public Category getCategory()
{
return pk.getCategory();
}
public void setCategory( Category category )
{
pk.setCategory( category );
}
}
@Embeddable
public class ArticleCategoryPK implements Serializable
{
private static final long serialVersionUID = 1L;
@ManyToOne
@ForeignKey( name = "tbl_articles_categories_fkey_article_id" )
private Article article;
@ManyToOne
@ForeignKey( name = "tbl_articles_categories_fkey_category_id" )
private Category category;
public ArticleCategoryPK( Article article, Category category )
{
setArticle( article );
setCategory( category );
}
public ArticleCategoryPK()
{
}
public Article getArticle()
{
return article;
}
public void setArticle( Article article )
{
this.article = article;
}
public Category getCategory()
{
return category;
}
public void setCategory( Category category )
{
this.category = category;
}
}
Now, I'm getting a serial type what I wanted in my articles table as well as in my categories table. But looking into my helper table, there aren't the expected fields article_id and category_id each of type integer - instead there are article and category of type bytea.
What's wrong here?
EDIT: Sorry, forgot to mention that I'm using PostgreSQL.
© Stack Overflow or respective owner