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

Filed under:
|

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

Related posts about java

Related posts about hibernate