[hibernate-issues] [Hibernate-JIRA] Closed: (HBX-933) Property access and type utilization conflict between runtime and code generation.

Max Rydahl Andersen (JIRA) noreply at atlassian.com
Thu Apr 19 15:36:04 EDT 2007


     [ http://opensource.atlassian.com/projects/hibernate/browse/HBX-933?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Max Rydahl Andersen closed HBX-933.
-----------------------------------

    Resolution: Rejected

There is no bug and your report makes no sense to.

access="someusertype" is wrong.

type="someusertype" is what should be used and of course if the "someusertype" is not available on the classpath to return the proper classname we can't do much else than assume the type is actually "someusertype"

Please use the user forum before posting non-bugs.

> Property access and type utilization conflict between runtime and code generation. 
> -----------------------------------------------------------------------------------
>
>                 Key: HBX-933
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HBX-933
>             Project: Hibernate Tools
>          Issue Type: Bug
>         Environment: Fedora Core 6
>            Reporter: ssarver
>            Priority: Minor
>         Attachments: jira.zip
>
>
> ########################################################
> #
> # README
> #
> ########################################################
> INSTRUCTIONS:
> 0) Edit hibernate.cfg.xml
> 1) Run user_ty.ddl
> 2) Execute: ant test
> >>>If code generation is performed with the type attribute
> set to the derived UserType
>     <property name="user" type="test.UserUserType">
>       <meta attribute="use-in-tostring">true</meta>
>       <column name="userObject" sql-type="USER_TY"/>
>     </property>
> then hbm2java creates a Person with the derived UserType:
> package test;
> /**
>  * Person generated by hbm2java
>  */
> public class Person  implements java.io.Serializable {
>   private long id;
>   private String name;
>   private long age;
>   private UserUserType user;
>   public Person() {
>   }
>   public Person(String name, long age) {
>     this.name = name;
>     this.age = age;
>   }
>   public Person(String name, long age, UserUserType user) {
>     this.name = name;
>     this.age = age;
>     this.user = user;
>   }
>   ...
> >>>If code generation is performed with the access attribute set to
> the derived UserType and the type set to User:
>     <property name="user" access="test.UserUserType" type="test.User">
>       <meta attribute="use-in-tostring">true</meta>
>       <column name="userObject" sql-type="USER_TY"/>
>     </property>
> then hbm2java creates a Person with the desired User type:
> package test;
> /**
>  * Person generated by hbm2java
>  */
> public class Person  implements java.io.Serializable {
>   private long id;
>   private String name;
>   private long age;
>   private User user;
>   public Person() {
>   }
>   public Person(String name, long age) {
>     this.name = name;
>     this.age = age;
>   }
>   public Person(String name, long age, User user) {
>     this.name = name;
>     this.age = age;
>     this.user = user;
>   }
>   ...
> However, using the following mapping at runtime:
>     <property name="user" access="test.UserUserType" type="test.User">
>       <meta attribute="use-in-tostring">true</meta>
>       <column name="userObject" sql-type="USER_TY"/>
>     </property>
> produces the error:
>      [java] Caused by: java.lang.ExceptionInInitializerError
>      [java]     at persistence.HibernateUtil.<clinit>(Unknown Source)
>      [java]     at test.TestPerson.testCreatePerson(Unknown Source)
>      [java]     at test.TestPerson.main(Unknown Source)
>      [java]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>      [java]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>      [java]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>      [java]     at java.lang.reflect.Method.invoke(Method.java:585)
>      [java]     at org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:217)
>      [java]     at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:152)
>      [java]     ... 20 more
>      [java] Caused by: org.hibernate.MappingException: Could not determine type for: test.User, for columns: [org.hibernate.
> mapping.Column(userObject)]
> Complete run:
> ssarver beta/home/ssarver/jira> ant test
> Buildfile: build.xml
> hbm:
> [hibernate-tool] Executing Hibernate Tool with a Standard Configuration
> [hibernate-tool] 1. task: hbm2java (Generates a set of .java files)
> [hibernate-tool] 08:39:29,040  INFO Environment:509 - Hibernate 3.2.3
> [hibernate-tool] 08:39:29,076  INFO Environment:542 - hibernate.properties not found
> [hibernate-tool] 08:39:29,083  INFO Environment:676 - Bytecode provider name : cglib
> [hibernate-tool] 08:39:29,114  INFO Environment:593 - using JDK 1.4 java.sql.Timestamp handling
> [hibernate-tool] 08:39:29,381  INFO Configuration:1460 - configuring from file: hibernate.cfg.xml
> [hibernate-tool] 08:39:29,611  INFO Configuration:1541 - Configured SessionFactory: null
> [hibernate-tool] 08:39:29,618  INFO Configuration:299 - Reading mappings from file: /home/ssarver/jira/src/test/Person.hbm.x
> ml
> [hibernate-tool] 08:39:29,942  INFO HbmBinder:300 - Mapping class: test.Person -> person
> [hibernate-tool] 08:39:30,393  INFO Version:15 - Hibernate Tools 3.2.0.b9
> [hibernate-tool] 2. task: hbm2dao (Generates a set of DAOs)
> [hibernate-tool] 3. task: hbm2ddl (Generates database schema)
> [hibernate-tool] 08:39:32,450  INFO Dialect:152 - Using dialect: org.hibernate.dialect.Oracle9Dialect
> [hibernate-tool] 08:39:32,597  INFO SchemaExport:154 - Running hbm2ddl schema export
> [hibernate-tool] 08:39:32,607  INFO SchemaExport:174 - writing generated schema to file: /home/ssarver/jira/target/src/test.
> ddl
> [hibernate-tool] 08:39:32,609  INFO SchemaExport:179 - exporting generated schema to database
> [hibernate-tool] 08:39:32,650  INFO DriverManagerConnectionProvider:41 - Using Hibernate built-in connection pool (not for p
> roduction use!)
> [hibernate-tool] 08:39:32,656  INFO DriverManagerConnectionProvider:42 - Hibernate connection pool size: 20
> [hibernate-tool] 08:39:32,657  INFO DriverManagerConnectionProvider:45 - autocommit mode: false
> [hibernate-tool] 08:39:32,708  INFO DriverManagerConnectionProvider:80 - using driver: oracle.jdbc.driver.OracleDriver at UR
> L: jdbc:oracle:thin:@oracrcdbsdev01.sd.lpl.com:1526:lpldev
> [hibernate-tool] 08:39:32,710  INFO DriverManagerConnectionProvider:86 - connection properties: {user=ops$ssarver, password=
> ****}
> [hibernate-tool]
> [hibernate-tool]     drop function SELECT_PERSON_BY_NAME;
> [hibernate-tool]
> [hibernate-tool]     drop table person cascade constraints;
> [hibernate-tool]
> [hibernate-tool]     drop sequence hibernate_sequence;
> [hibernate-tool]
> [hibernate-tool]     create table person (
> [hibernate-tool]         id number(19,0) not null,
> [hibernate-tool]         name varchar2(255 char) not null,
> [hibernate-tool]         age number(19,0) not null,
> [hibernate-tool]         userObject USER_TY,
> [hibernate-tool]         primary key (id)
> [hibernate-tool]     );
> [hibernate-tool]
> [hibernate-tool]     create sequence hibernate_sequence;
> [hibernate-tool]
> [hibernate-tool]     CREATE OR REPLACE FUNCTION SELECT_PERSON_BY_NAME(p_name varchar) RETURN SYS_REFCURSOR IS st_cursor SYS_
> REFCURSOR; BEGIN OPEN st_cursor FOR SELECT * from person WHERE name LIKE '%' || p_name || '%'; RETURN st_cursor; END;;
> [hibernate-tool] 08:39:34,224  INFO SchemaExport:196 - schema export complete
> [hibernate-tool] 08:39:34,229  INFO DriverManagerConnectionProvider:147 - cleaning up connection pool: jdbc:oracle:thin:@ora
> crcdbsdev01.sd.lpl.com:1526:lpldev
> [hibernate-tool] 4. task: hbm2cfgxml (Generates hibernate.cfg.xml)
> copyhbm:
>     [mkdir] Created dir: /home/ssarver/jira/target/classes
>      [copy] Copying 1 file to /home/ssarver/jira/target/classes
> build:
>     [javac] Compiling 6 source files to /home/ssarver/jira/target/classes
>     [javac] /home/ssarver/jira/target/src/test/Person.java
>     [javac] /home/ssarver/jira/target/src/test/PersonHome.java
>     [javac] /home/ssarver/jira/src/persistence/HibernateUtil.java
>     [javac] /home/ssarver/jira/src/test/TestPerson.java
>     [javac] /home/ssarver/jira/src/test/User.java
>     [javac] /home/ssarver/jira/src/test/UserUserType.java
> 08:39:35,740  INFO DriverManagerConnectionProvider:147 - cleaning up connection pool: jdbc:oracle:thin:@oracrcdbsdev01.sd.lp
> l.com:1526:lpldev
> jar:
>       [jar] Building jar: /home/ssarver/jira/target/test.jar
> test:
>      [java] 08:39:37,901  INFO Environment:509 - Hibernate 3.2.3
>      [java] 08:39:37,960  INFO Environment:542 - hibernate.properties not found
>      [java] 08:39:37,967  INFO Environment:676 - Bytecode provider name : cglib
>      [java] 08:39:38,051  INFO Environment:593 - using JDK 1.4 java.sql.Timestamp handling
>      [java] 08:39:38,362  INFO Configuration:1426 - configuring from resource: /hibernate.cfg.xml
>      [java] 08:39:38,366  INFO Configuration:1403 - Configuration resource: /hibernate.cfg.xml
>      [java] 08:39:39,227  INFO Configuration:553 - Reading mappings from resource : test/Person.hbm.xml
>      [java] 08:39:39,594  INFO HbmBinder:300 - Mapping class: test.Person -> person
>      [java] 08:39:39,731  INFO Configuration:1541 - Configured SessionFactory: null
>      [java] java.lang.ExceptionInInitializerError
>      [java]     at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:194)
>      [java]     at org.apache.tools.ant.taskdefs.Java.run(Java.java:747)
>      [java]     at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:201)
>      [java]     at org.apache.tools.ant.taskdefs.Java.execute(Java.java:104)
>      [java]     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
>      [java]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>      [java]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>      [java]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>      [java]     at java.lang.reflect.Method.invoke(Method.java:585)
>      [java]     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
>      [java]     at org.apache.tools.ant.Task.perform(Task.java:348)
>      [java]     at org.apache.tools.ant.Target.execute(Target.java:357)
>      [java]     at org.apache.tools.ant.Target.performTasks(Target.java:385)
>      [java]     at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
>      [java]     at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
>      [java]     at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
>      [java]     at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
>      [java]     at org.apache.tools.ant.Main.runBuild(Main.java:698)
>      [java]     at org.apache.tools.ant.Main.startAnt(Main.java:199)
>      [java]     at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
>      [java]     at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
>      [java] Caused by: java.lang.ExceptionInInitializerError
>      [java]     at persistence.HibernateUtil.<clinit>(Unknown Source)
>      [java]     at test.TestPerson.testCreatePerson(Unknown Source)
>      [java]     at test.TestPerson.main(Unknown Source)
>      [java]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>      [java]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>      [java]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>      [java]     at java.lang.reflect.Method.invoke(Method.java:585)
>      [java]     at org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:217)
>      [java]     at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:152)
>      [java]     ... 20 more
>      [java] Caused by: org.hibernate.MappingException: Could not determine type for: test.User, for columns: [org.hibernate.
> mapping.Column(userObject)]
>      [java]     at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:266)
>      [java]     at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:253)
>      [java]     at org.hibernate.mapping.Property.isValid(Property.java:185)
>      [java]     at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:440)
>      [java]     at org.hibernate.mapping.RootClass.validate(RootClass.java:192)
>      [java]     at org.hibernate.cfg.Configuration.validate(Configuration.java:1102)
>      [java]     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1287)
>      [java]     at persistence.HibernateUtil.<clinit>(Unknown Source)
>      [java]     ... 28 more
>      [java] --- Nested Exception ---
>      [java] java.lang.ExceptionInInitializerError
>      [java]     at persistence.HibernateUtil.<clinit>(Unknown Source)
>      [java]     at test.TestPerson.testCreatePerson(Unknown Source)
>      [java]     at test.TestPerson.main(Unknown Source)
>      [java]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>      [java]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>      [java]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>      [java]     at java.lang.reflect.Method.invoke(Method.java:585)
>      [java]     at org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:217)
>      [java]     at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:152)
>      [java]     at org.apache.tools.ant.taskdefs.Java.run(Java.java:747)
>      [java]     at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:201)
>      [java]     at org.apache.tools.ant.taskdefs.Java.execute(Java.java:104)
>      [java]     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
>      [java]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>      [java]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>      [java]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>      [java]     at java.lang.reflect.Method.invoke(Method.java:585)
>      [java]     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
>      [java]     at org.apache.tools.ant.Task.perform(Task.java:348)
>      [java]     at org.apache.tools.ant.Target.execute(Target.java:357)
>      [java]     at org.apache.tools.ant.Target.performTasks(Target.java:385)
>      [java]     at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
>      [java]     at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
>      [java]     at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
>      [java]     at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
>      [java]     at org.apache.tools.ant.Main.runBuild(Main.java:698)
>      [java]     at org.apache.tools.ant.Main.startAnt(Main.java:199)
>      [java]     at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
>      [java]     at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
>      [java] Caused by: org.hibernate.MappingException: Could not determine type for: test.User, for columns: [org.hibernate.
> mapping.Column(userObject)]
>      [java]     at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:266)
>      [java]     at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:253)
>      [java]     at org.hibernate.mapping.Property.isValid(Property.java:185)
>      [java]     at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:440)
>      [java]     at org.hibernate.mapping.RootClass.validate(RootClass.java:192)
>      [java]     at org.hibernate.cfg.Configuration.validate(Configuration.java:1102)
>      [java]     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1287)
>      [java]     at persistence.HibernateUtil.<clinit>(Unknown Source)
>      [java]     ... 28 more
> BUILD SUCCESSFUL
> Total time: 13 seconds
> ssarver beta/home/ssarver/jira>
> >>>Work Around:
> Change the name of
> hbm/test/Person.hbm.xml.hide
> to hbm/test/Person.hbm.xml
> and this file to ensure that this mapping definition is
> is included in test.jar and not src/test/Person.hbm.xml
> This way, at runtime, the following mapping and Person
> is being used together successfully:
>    <property name="user" type="test.UserUserType">
>       <meta attribute="use-in-tostring">true</meta>
>       <column name="userObject" sql-type="USER_TY"/>
>    </property>
> package test;
> /**
>  * Person generated by hbm2java
>  */
> public class Person  implements java.io.Serializable {
>   private long id;
>   private String name;
>   private long age;
>   private User user;
>   public Person() {
>   }
>   public Person(String name, long age) {
>     this.name = name;
>     this.age = age;
>   }
>   public Person(String name, long age, User user) {
>     this.name = name;
>     this.age = age;
>     this.user = user;
>   }
>   ...

-- 
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