MyEclipse Forums
Post new topic   Reply to topic
View previous topic Printable version Log in to check your private messages View next topic
Author Message
sonoerin
Post subject: hibernate mapping approach  PostPosted: Aug 17, 2012 - 04:24 AM
Veteran Member
Veteran Member


Joined: Jul 22, 2005
Posts: 107

I am using
    hibernate 3.2.5.ga
    hibernate-annotations 3.3.1.ga
    hibernate-commons-annotations 3.3.0.ga
    spring 3.1.1
    MySQL 5


This should be a very simple case, but I think I am missing something obvious. I have a User table and a UserRole table - without a foreign key.
I have the following entities:
Code:
@Entity
@Table(name = "User", catalog = "mcp", uniqueConstraints = { @UniqueConstraint(columnNames = "UserName") })
public class User implements Serializable {

   // Fields
   @Id
   @Column(name = "UserId", unique = true, nullable = false)
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Long userId;

   @Column(name = "Status", length = 50)
   private Integer status = 0;

   @Column(name = "Password", length = 45)
   private String password;
   @Column(name = "UserName", unique = true, length = 50)
   private String userName;

   @OneToOne
   private UserRole userRole;
.. getters & setters()...
}


and

Code:
@Entity
@Table(name = "UserRole", catalog = "mcp")
public class UserRole implements Serializable {

   @Id
   @Column(name = "Id")
   @GeneratedValue
   private Long id;

   @Column(name = "UserRoleDescriptionShort", length = 45)
   private String userRoleDescriptionShort;

   @Column(name = "UserRoleDescription", length = 200)
   private String userRoleDescription;
.. getters & setters()...
}


However, when I try to build, I get this:

Caused by: org.hibernate.HibernateException: Missing column: userRole_Id in mcp.User
at org.hibernate.mapping.Table.validateColumns(Table.java:254)
at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1083)
at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:116)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:317)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
at com.edelweissco.mcp.dao.DefaultDaoConfig.getSessionFactory(DefaultDaoConfig.java:56)
at com.edelweissco.mcp.dao.DefaultDaoConfig$$EnhancerByCGLIB$$8a709eb.CGLIB$getSessionFactory$0(<generated>)
at com.edelweissco.mcp.dao.DefaultDaoConfig$$EnhancerByCGLIB$$8a709eb$$FastClassByCGLIB$$b97b030b.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:167)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:280)
at com.edelweissco.mcp.dao.DefaultDaoConfig$$EnhancerByCGLIB$$8a709eb.getSessionFactory(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:149)


So my question is, is this a good strategy for Hibernate/Spring? Should I allow Hibernate to manage the relationships as above, or if I should I modify User table to have a "userRoleId" that holds the value from UserRole table? If so, what would that look like.
 
 View user's profile Send private message Visit poster's website  
Reply with quote Back to top
support-swapna
Post subject:   PostPosted: Aug 17, 2012 - 07:15 AM



Joined: Nov 11, 2010
Posts: 2193

sonoerin,

Firstly, do you have a column "Id" in the user role table ? Ideally you should have a foreign key constraint between the two tables.

It might also be an issue with user permissions. Take a look at this link :
https://forum.hibernate.org/viewtopic.php?f=1&t=995850

I suggest you cross post to Hibernate development forums for better support as this is a Hibernate question rather than a MyEclipse one.

Hope this helps.

_________________
Swapna
MyEclipse Support
 
 View user's profile Send private message  
Reply with quote Back to top
sonoerin
Post subject:   PostPosted: Aug 20, 2012 - 01:20 PM
Veteran Member
Veteran Member


Joined: Jul 22, 2005
Posts: 107

I should have mentioned I am developing this in MyEclipse:
Version: 10.5
Build id: 10.5-20120615

I have setup a side/test project for mapping of this. Here are the dependencies:
    <spring.version>3.1.1.RELEASE</spring.version>
    <hibernate.version>3.4.0.GA</hibernate.version>
    <mysql.connector.version>5.1.21</mysql.connector.version>
    <hsql.version>1.8.0.10</hsql.version>


I am just trying to get a unit test going using HSQL for now. Is there a standard way to test Hibernate/Spring ? Each time I create a test I get the previous error message, so I must be doing something wrong, even though this is about as simple of a @OneToOne example as there is (except for the lack of a foreign key).
 
 View user's profile Send private message Visit poster's website  
Reply with quote Back to top
Display posts from previous:     
Jump to:  
All times are GMT - 6 Hours
Post new topic   Reply to topic
View previous topic Printable version Log in to check your private messages View next topic
Powered by PNphpBB2 © 2003-2004 The PNphpBB Group
Credits