新足迹

 找回密码
 注册

精华好帖回顾

· 姚师傅的炒烩面++ 教车的也来凑个热闹 刚刚做了终结 (2007-8-19) driveryao · 天天都是万圣节 (2006-11-1) AgeanSea
· 2011年最后一个长篇-------我与毒人的“亲密”接触-----珍惜生命,远离毒品 (2011-11-13) 太有才了 · 百年环意! (2009-5-4) joaquin
Advertisement
Advertisement
查看: 2014|回复: 17

Hibernate Annotations [复制链接]

发表于 2010-11-19 15:00 |显示全部楼层
此文章由 Jcreek 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Jcreek 所有!转贴必须注明作者、出处和本声明,并保持内容完整
不好意思又要请教各位了。使用Hibernate Annotations配置如下:
applicationContext.xml
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource">
                <ref local="dataSource"/>
        </property>
                <property name="annotatedClasses">
                    <list>
                        <value>com.spider.domain.Suburb</value>
                    </list>
                </property>                       
        <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">net.sf.hibernate.dialect.OracleDialect</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
        </props>
        </property>
    </bean>

    <bean id="suburbDAO" class="com.spider.dao.SuburbDAOImpl">
        <property name="sessionFactory"><ref local="sessionFactory"/></property>
    </bean>
Advertisement
Advertisement

发表于 2010-11-19 15:02 |显示全部楼层
此文章由 Jcreek 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Jcreek 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Suburb.java
package com.spider.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="SUBURB")
public class Suburb {
        private Long id;
        private String name;
        private String postcode;
        private String state;
       
        @Id
        @Column(name="ID")
        public Long getId() {
                return id;
        }
        public void setId(Long id) {
                this.id = id;
        }
       
        @Column(name="NAME")
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        @Column(name="POSTCODE")
        public String getPostcode() {
                return postcode;
        }
        public void setPostcode(String postcode) {
                this.postcode = postcode;
        }
        @Column(name="STATE")
        public String getState() {
                return state;
        }
        public void setState(String state) {
                this.state = state;
        }
}

发表于 2010-11-19 15:06 |显示全部楼层
此文章由 Jcreek 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Jcreek 所有!转贴必须注明作者、出处和本声明,并保持内容完整
运行时发生错误:
19/11/2010 16:04:00 org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.FileSystemXmlApplicationContext@b753f8: display name [org.springframework.context.support.FileSystemXmlApplicationContext@b753f8]; startup date [Fri Nov 19 16:04:00 EST 2010]; root of context hierarchy
19/11/2010 16:04:00 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from file [C:\files\spring\Spider\applicationContext.xml]
19/11/2010 16:04:00 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org.springframework.context.support.FileSystemXmlApplicationContext@b753f8]: org.springframework.beans.factory.support.DefaultListableBeanFactory@80d1ff
19/11/2010 16:04:00 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@80d1ff: defining beans [dataSource,sessionFactory,suburbDAO]; root of factory hierarchy
19/11/2010 16:04:00 org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassName
INFO: Loaded JDBC driver: oracle.jdbc.OracleDriver
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
19/11/2010 16:04:01 org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.0.5
19/11/2010 16:04:01 org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
19/11/2010 16:04:01 org.hibernate.cfg.Environment <clinit>
INFO: using CGLIB reflection optimizer
19/11/2010 16:04:01 org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
19/11/2010 16:04:01 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons
INFO: Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@80d1ff: defining beans [dataSource,sessionFactory,suburbDAO]; root of factory hierarchy
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in file [C:\files\spring\Spider\applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/context/CurrentSessionContext

发表于 2010-11-19 15:12 |显示全部楼层
此文章由 Jcreek 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Jcreek 所有!转贴必须注明作者、出处和本声明,并保持内容完整
以上是彻底参照http://www.vaannila.com/spring/s ... -integration-1.html里面的例子。
现在搞不懂是sessionFactory的问题还是我自己的class的问题。
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in file [C:\files\spring\Spider\applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/context/CurrentSessionContext

2010年度奖章获得者

发表于 2010-11-19 15:17 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
悲剧。

昨天不是告诉你改 .xml 改build action 属性吗。

干吗又要换Annotations?

发表于 2010-11-19 15:19 |显示全部楼层
此文章由 Jcreek 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Jcreek 所有!转贴必须注明作者、出处和本声明,并保持内容完整
是呀,昨天的没问题了。想改成Annotations试试,结果弄不通了。
Advertisement
Advertisement

2010年度奖章获得者

发表于 2010-11-19 15:27 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
哦,这样啊。 那你自己慢慢玩吧 :)

发表于 2010-11-19 15:29 |显示全部楼层
此文章由 Jcreek 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Jcreek 所有!转贴必须注明作者、出处和本声明,并保持内容完整

发表于 2010-11-19 16:05 |显示全部楼层
此文章由 Jcreek 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Jcreek 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Maybe jar files conflict, not sure

发表于 2010-11-24 15:37 |显示全部楼层
此文章由 Jcreek 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Jcreek 所有!转贴必须注明作者、出处和本声明,并保持内容完整
使用hibernate annotation工作了。有谁知道上面和这个之间的差异?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
                "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
        <property name="hibernate.connection.url">jdbc:oracle:thin192.168.10.170:1521:mydb</property>
        <property name="hibernate.connection.username">user</property>
        <property name="connection.password"></property>
        <property name="connection.pool_size">1</property>
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</property>
        <property name="show_sql">true</property>
        <property name="hbm2ddl.auto">read</property>
        <mapping class="com.mydomain.model.Suburb" />
        </session-factory>
</hibernate-configuration>

发表于 2010-11-24 15:48 |显示全部楼层
此文章由 starchu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 starchu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
90%的可能是jar classpath冲突。。。
Advertisement
Advertisement

发表于 2010-11-24 15:48 |显示全部楼层
此文章由 东北老乡 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 东北老乡 所有!转贴必须注明作者、出处和本声明,并保持内容完整
19/11/2010 16:04:01 org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.0.5
19/11/2010 16:04:01 org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found

应该是jar conflict. 跟config没关系吧. 为什么会是Hibernate 3.0.5

发表于 2010-11-24 15:49 |显示全部楼层
此文章由 starchu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 starchu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
查查自己的classpath的hibernate annotation相关的jar,

发表于 2010-11-24 15:51 |显示全部楼层
此文章由 东北老乡 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 东北老乡 所有!转贴必须注明作者、出处和本声明,并保持内容完整
只有Hibernate 3.1 以上才有org/hibernate/context/CurrentSessionContext Class
Hibernate 版本太低了

[ 本帖最后由 东北老乡 于 2010-11-24 16:52 编辑 ]

发表于 2010-11-24 15:52 |显示全部楼层
此文章由 starchu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 starchu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
如果你用maven的话,可以很容易查看项目的jar dependencies的情况,如果你没有maven, 那就只好自己手动排查了

发表于 2010-11-24 15:53 |显示全部楼层
此文章由 starchu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 starchu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
估计你提供的hibernate版本和你的spring版本所需要的hibernate版本不一致,导致spring不能inject sessionFactory
Advertisement
Advertisement

发表于 2010-11-24 16:00 |显示全部楼层
此文章由 Jcreek 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Jcreek 所有!转贴必须注明作者、出处和本声明,并保持内容完整
wow. thanks guys. learned that

发表于 2010-11-25 09:26 |显示全部楼层
此文章由 Jcreek 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Jcreek 所有!转贴必须注明作者、出处和本声明,并保持内容完整
五湖!Bean + Annotations 工作了!果然是Hibernate jar的问题,选了太低的版本。
谢谢各位高手!准备安装Maven.

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部