[hibernate-issues] [Hibernate-JIRA] Resolved: (HHH-5079) ManyToOne fails to bind via annotations in 3.5
Emmanuel Bernard (JIRA)
noreply at atlassian.com
Thu Apr 8 04:29:44 EDT 2010
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-5079?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Emmanuel Bernard resolved HHH-5079.
-----------------------------------
Assignee: Emmanuel Bernard
Resolution: Won't Fix
Likely the issue comes from the fact that you define your id twice. DatedPojo and IndexedDatedPojo both define an id property marked as @Id. This is not correct.
> 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