[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-5079) ManyToOne fails to bind via annotations in 3.5

victor igumnov (JIRA) noreply at atlassian.com
Thu Apr 8 13:27:42 EDT 2010


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-5079?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=36311#action_36311 ] 

victor igumnov commented on HHH-5079:
-------------------------------------

Emmanuel, you might of misread that,  Article inherits from IndexedDatedPojo   while ArticleComment inherits from DatedPojo... There is no inheritance between IndexedDatedPojo and DatedPojo.

> ManyToOne fails to bind via annotations in 3.5
> ----------------------------------------------
>
>                 Key: HHH-5079
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5079
>             Project: Hibernate Core
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 3.5.0-Final
>         Environment: java 1.6
>            Reporter: victor igumnov
>            Assignee: Emmanuel Bernard
>
> I am trying to migrate our large 50+ entity hibernate application from 3.3 to 3.5, but it seems to be failing on annotated bindings that use @OneToMany. Perhaps this might be a hibernate-annotations bug? I have done various migrations from 3.0 to 3.3 without any issues until now. Any help is much appreciated. 
> Here is the full error. Basically ArticleComment Failing to reference Article. 
> I have included source for articlecomment/article and "datedpojo" the base class that both entities inherit from. Hope that helps. 
> org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jTransactionManager' defined in class path resource [c3p0.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [context.xml]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: A Foreign key refering com.fab40.service.pojos.Article from com.fab40.service.pojos.ArticleComment has the wrong number of column. should be 2
>    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
>    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1317)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1076)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
>    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
>    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
>    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
>    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:563)
>    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:872)
>    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
>    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
>    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
>    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
>    at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548)
>    at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
>    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1234)
>    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
>    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:460)
>    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
>    at org.mortbay.jetty.Server.doStart(Server.java:222)
>    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>    at com.fab40.StandAlone.main(StandAlone.java:27)
> Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [context.xml]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: A Foreign key refering com.fab40.service.pojos.Article from com.fab40.service.pojos.ArticleComment has the wrong number of column. should be 2
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1412)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
>    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
>    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
>    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
>    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
>    ... 25 more
> Caused by: org.hibernate.AnnotationException: A Foreign key refering com.fab40.service.pojos.Article from com.fab40.service.pojos.ArticleComment has the wrong number of column. should be 2
>    at org.hibernate.cfg.annotations.TableBinder.bindFk(TableBinder.java:421)
>    at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:111)
>    at org.hibernate.cfg.AnnotationConfiguration.processEndOfQueue(AnnotationConfiguration.java:541)
>    at org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:523)
>    at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:380)
>    at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1206)
>    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:717)
>    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1469)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409)
>    ... 32 more
> *** ERROR [main]: Failed startup of context org.mortbay.jetty.webapp.WebAppContext at 1b1c7295{/,src/webapp}
> org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jTransactionManager' defined in class path resource [c3p0.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [context.xml]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: A Foreign key refering com.fab40.service.pojos.Article from com.fab40.service.pojos.ArticleComment has the wrong number of column. should be 2
>    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
>    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1317)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1076)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
>    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
>    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
>    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
>    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:563)
>    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:872)
>    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
>    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
>    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
>    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
>    at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548)
>    at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
>    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1234)
>    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
>    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:460)
>    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
>    at org.mortbay.jetty.Server.doStart(Server.java:222)
>    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>    at com.fab40.StandAlone.main(StandAlone.java:27)
> Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [context.xml]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: A Foreign key refering com.fab40.service.pojos.Article from com.fab40.service.pojos.ArticleComment has the wrong number of column. should be 2
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1412)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
>    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
>    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
>    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
>    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
>    ... 25 more
> Caused by: org.hibernate.AnnotationException: A Foreign key refering com.fab40.service.pojos.Article from com.fab40.service.pojos.ArticleComment has the wrong number of column. should be 2
>    at org.hibernate.cfg.annotations.TableBinder.bindFk(TableBinder.java:421)
>    at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:111)
>    at org.hibernate.cfg.AnnotationConfiguration.processEndOfQueue(AnnotationConfiguration.java:541)
>    at org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:523)
>    at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:380)
>    at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1206)
>    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:717)
>    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1469)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409)
>    ... 32 more
> *** ERROR [main]: Nested in org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jTransactionManager' defined in class path resource [c3p0.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [context.xml]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: A Foreign key refering com.fab40.service.pojos.Article from com.fab40.service.pojos.ArticleComment has the wrong number of column. should be 2:
> org.hibernate.AnnotationException: A Foreign key refering com.fab40.service.pojos.Article from com.fab40.service.pojos.ArticleComment has the wrong number of column. should be 2
>    at org.hibernate.cfg.annotations.TableBinder.bindFk(TableBinder.java:421)
>    at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:111)
>    at org.hibernate.cfg.AnnotationConfiguration.processEndOfQueue(AnnotationConfiguration.java:541)
>    at org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:523)
>    at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:380)
>    at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1206)
>    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:717)
>    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1469)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
>    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
>    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
>    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
>    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
>    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1317)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1076)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
>    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
>    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
>    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
>    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
>    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:563)
>    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:872)
>    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
>    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
>    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
>    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
>    at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548)
>    at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
>    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1234)
>    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
>    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:460)
>    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
>    at org.mortbay.jetty.Server.doStart(Server.java:222)
>    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
>    at com.fab40.StandAlone.main(StandAlone.java:27)
> *** INFO  [main]: Started SocketConnector at 0.0.0.0:8090
> package com.fab40.service.pojos;
> import com.base.persistance.defaults.defaulters.DefaultBooleanValue;
> import com.base.persistance.pojo.IndexedDatedPojo;
> import com.fab40.annotations.PostablePage;
> import com.fab40.annotations.VoteComment;
> import com.fab40.pages.ViewArticle;
> import org.hibernate.annotations.*;
> import org.hibernate.search.annotations.Field;
> import org.hibernate.search.annotations.Index;
> import org.hibernate.search.annotations.Indexed;
> import org.hibernate.search.annotations.Store;
> import javax.persistence.*;
> import javax.persistence.CascadeType;
> import javax.persistence.Entity;
> import javax.persistence.OrderBy;
> import javax.persistence.Table;
> import javax.validation.constraints.NotNull;
> import java.util.Date;
> import java.util.HashSet;
> import java.util.Set;
> @Entity
> @org.hibernate.annotations.Entity(dynamicUpdate = true, selectBeforeUpdate = true, dynamicInsert = true)
> @Indexed
> @Table(name = "articles")
> @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
> @PostablePage(pageClass = ViewArticle.class)
> @VoteComment(clazz = ArticleComment.class)
> public class Article extends IndexedDatedPojo implements IPicturePostable, ICategoryPostable, ISlug, IVote, IPublish {
>     private static final long serialVersionUID = 1L;
>     @Column(name = "up_vote_count", nullable = false)
>     private int upVoteCount = 0;
>     @Column(name = "down_vote_count", nullable = false)
>     private int downVoteCount = 0;
>     @Field(index = Index.TOKENIZED, store = Store.NO)
>     @Column(name = "subject", nullable = false, unique = true)
>     private String subject;
>     @Lob
>     @Column(name = "json", nullable = true)
>     private String json;
>     @ManyToOne
>     @JoinColumn(name = "user_id", nullable = false)
>     private User user;
>     @Column(name = "slug", nullable = false, unique = true)
>     private String slug;
>     @Lob
>     @Field(index = Index.TOKENIZED, store = Store.NO)
>     @Column(name = "body", nullable = false)
>     private String body;
>     @NotNull
>     @ManyToOne(fetch = FetchType.EAGER)
>     @JoinColumn(name = "category_id", nullable = false)
>     private Category category;
>     @Column(name = "image", nullable = false)
>     private String image;
>     @Column(name = "popularity", nullable = false)
>     private int popularity;
>     @Column(name = "producer_url", nullable = false)
>     private String producerUrl;
>     @Column(name = "author", nullable = false)
>     private String author;
>     @DefaultBooleanValue(true)
>     @Column(name = "published", nullable = false)
>     private Boolean published;
>     @Column(name = "date_published")
>     private Date datePublished;
>     @OneToMany(targetEntity = ArticleComment.class, mappedBy = "article", cascade = {CascadeType.ALL}, fetch = FetchType.LAZY)
>     @Cascade(value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
>     @OrderBy("created asc")
>     private Set<IComment> comments = new HashSet<IComment>();
>     public String getSubject() {
>         return subject;
>     }
>     public void setSubject(final String subject) {
>         this.subject = subject;
>     }
>     public String getBody() {
>         return body;
>     }
>     public void setBody(final String body) {
>         this.body = body;
>     }
>     public Category getCategory() {
>         return category;
>     }
>     public void setCategory(final Category category) {
>         this.category = category;
>     }
>     public void setImage(final String image) {
>         this.image = image;
>     }
>     public String getImage() {
>         return image;
>     }
>     public void setProducerUrl(final String producerUrl) {
>         this.producerUrl = producerUrl;
>     }
>     public String getProducerUrl() {
>         return producerUrl;
>     }
>     public void setAuthor(final String author) {
>         this.author = author;
>     }
>     public String getAuthor() {
>         return author;
>     }
>     public void setPublished(final Boolean published) {
>         this.published = published;
>     }
>     public Boolean getPublished() {
>         return published;
>     }
>     public void setComments(final Set<IComment> comments) {
>         this.comments = comments;
>     }
>     public Set<IComment> getComments() {
>         return comments;
>     }
>     public void setPopularity(final int popularity) {
>         this.popularity = popularity;
>     }
>     public int getPopularity() {
>         return popularity;
>     }
>     public void setUser(final User user) {
>         this.user = user;
>     }
>     public User getUser() {
>         return user;
>     }
>     public void setSlug(final String slug) {
>         this.slug = slug;
>     }
>     public String getSlug() {
>         return slug;
>     }
>     public void setUpVoteCount(final int upVoteCount) {
>         this.upVoteCount = upVoteCount;
>     }
>     public int getUpVoteCount() {
>         return upVoteCount;
>     }
>     public void setDownVoteCount(final int downVoteCount) {
>         this.downVoteCount = downVoteCount;
>     }
>     public int getDownVoteCount() {
>         return downVoteCount;
>     }
>     public void setDatePublished(final Date datePublished) {
>         this.datePublished = datePublished;
>     }
>     public Date getDatePublished() {
>         return datePublished;
>     }
>     public String getJson() {
>         return json;
>     }
>     public void setJson(String json) {
>         this.json = json;
>     }
> }
> package com.fab40.service.pojos;
> import com.base.persistance.pojo.DatedPojo;
> import org.hibernate.annotations.Cache;
> import org.hibernate.annotations.*;
> import javax.persistence.CascadeType;
> import javax.persistence.*;
> import javax.persistence.Entity;
> import javax.persistence.Table;
> import java.util.HashSet;
> import java.util.Set;
> @Entity
> @org.hibernate.annotations.Entity(dynamicUpdate = true, selectBeforeUpdate = true, dynamicInsert = true)
> @Table(name = "article_comments")
> @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
> public class ArticleComment extends DatedPojo implements IComment, IFeed, IVote {
>     private static final long serialVersionUID = 1L;
>     @Column(name = "up_vote_count", nullable = false)
>     private int upVoteCount = 0;
>     @Column(name = "down_vote_count", nullable = false)
>     private int downVoteCount = 0;
>     @OneToMany(mappedBy = "articleComment", cascade = CascadeType.ALL)
>     @Cascade(value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
>     @LazyCollection(LazyCollectionOption.EXTRA)
>     private Set<FeedAction> feedActions = new HashSet<FeedAction>();
>     @ManyToOne
>     @JoinColumn(name = "user_id", nullable = false)
>     private User user;
>     @ManyToOne(optional = false)
>     @JoinColumn(name = "article_id", nullable = false)
>     private Article article;
>     @Lob
>     @Column(name = "body", nullable = false)
>     private String body;
>     public User getUser() {
>         return user;
>     }
>     public void setUser(final User user) {
>         this.user = user;
>     }
>     public Article getArticle() {
>         return article;
>     }
>     public void setArticle(final Article article) {
>         this.article = article;
>     }
>     public String getBody() {
>         return body;
>     }
>     public void setBody(final String body) {
>         this.body = body;
>     }
>     public IPostable getPostable() {
>         return article;
>     }
>     public void setPostable(final IPostable postable) {
>         article = (Article) postable;
>     }
>     public void setFeedActions(final Set<FeedAction> feedActions) {
>         this.feedActions = feedActions;
>     }
>     public Set<FeedAction> getFeedActions() {
>         return feedActions;
>     }
>     public void setUpVoteCount(final int upVoteCount) {
>         this.upVoteCount = upVoteCount;
>     }
>     public int getUpVoteCount() {
>         return upVoteCount;
>     }
>     public void setDownVoteCount(final int downVoteCount) {
>         this.downVoteCount = downVoteCount;
>     }
>     public int getDownVoteCount() {
>         return downVoteCount;
>     }
> }
> package com.base.persistance.pojo;
> import java.io.Serializable;
> import java.util.Date;
> import javax.persistence.Column;
> import javax.persistence.GeneratedValue;
> import javax.persistence.GenerationType;
> import javax.persistence.Id;
> import javax.persistence.MappedSuperclass;
> import javax.persistence.Temporal;
> import javax.persistence.TemporalType;
> import com.base.persistance.defaults.defaulters.DefaultDateValue;
> import com.base.persistance.defaults.defaulters.DateSaveType.DateSave;
> @MappedSuperclass
> public abstract class DatedPojo implements Serializable, BasePojo {
>    @Id
>    @GeneratedValue(strategy = GenerationType.IDENTITY)
>    private int id;
>    @DefaultDateValue(DateSave.SAVE_CREATED)
>    @Column(name = "created", nullable = false)
>    @Temporal(TemporalType.TIMESTAMP)
>    private Date created = new Date();
>    @DefaultDateValue(DateSave.SAVE_UPDATED)
>    @Column(name = "updated", nullable = false)
>    @Temporal(TemporalType.TIMESTAMP)
>    private Date updated = new Date();
>    public DatedPojo() {
>    }
>    public DatedPojo(final int id) {
>       this.id = id;
>    }
>    /*
>     * (non-Javadoc)
>     * 
>     * @see com.base.persistance.pojo.BasePojo#setCreated(java.util.Date)
>     */
>    public void setCreated(final Date created) {
>       this.created = created;
>    }
>    /*
>     * (non-Javadoc)
>     * 
>     * @see com.base.persistance.pojo.BasePojo#getCreated()
>     */
>    public Date getCreated() {
>       return created;
>    }
>    /*
>     * (non-Javadoc)
>     * 
>     * @see com.base.persistance.pojo.BasePojo#setUpdated(java.util.Date)
>     */
>    public void setUpdated(final Date updated) {
>       this.updated = updated;
>    }
>    /*
>     * (non-Javadoc)
>     * 
>     * @see com.base.persistance.pojo.BasePojo#getUpdated()
>     */
>    public Date getUpdated() {
>       return updated;
>    }
>    /*
>     * (non-Javadoc)
>     * 
>     * @see com.base.persistance.pojo.BasePojo#setId(long)
>     */
>    public void setId(final int id) {
>       this.id = id;
>    }
>    /*
>     * (non-Javadoc)
>     * 
>     * @see com.base.persistance.pojo.BasePojo#getId()
>     */
>    public int getId() {
>       return id;
>    }
>    @Override
>    public boolean equals(final Object obj) {
>       if (this == obj) {
>          return true;
>       }
>       if (obj == null) {
>          return false;
>       }
>       BasePojo p = (BasePojo) obj;
>       if (getId() == 0 || p.getId() == 0) {
>          return false;
>       }
>       if (this.getId() == p.getId()) {
>          return true;
>       } else {
>          return false;
>       }
>    }
>    @Override
>    public int hashCode() {
>       return 29 + this.getId();
>    }
> }
> package com.base.persistance.pojo;
> import javax.persistence.GeneratedValue;
> import javax.persistence.GenerationType;
> import javax.persistence.Id;
> import javax.persistence.MappedSuperclass;
> import org.hibernate.search.annotations.DocumentId;
> @MappedSuperclass
> public abstract class IndexedDatedPojo extends DatedPojo {
>    private static final long serialVersionUID = 1L;
>    @Id
>    @DocumentId
>    @GeneratedValue(strategy = GenerationType.IDENTITY)
>    private int id;
>    @Override
>    public void setId(final int id) {
>       this.id = id;
>    }
>    @Override
>    public int getId() {
>       return id;
>    }
> }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list