【发布时间】:2010-09-23 06:46:36
【问题描述】:
我有一个我认为很简单的问题。我已经看到了两种方式的例子。问题是 - “为什么我不能将我的注释放在字段上?”。举个例子吧……
@Entity
@Table(name="widget")
public class Widget {
private Integer id;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public Integer getId() { return this.id; }
public Integer setId(Integer Id) { this.id = id;}
}
上面的代码工作正常(假设那里没有错字)。当注解放在属性的 getter 上时,一切都完美了。
但是,这对我来说似乎很尴尬。在我看来,将注释放在字段上会更干净,就像这样--
@Entity
@Table(name="widget")
public class Widget {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
public Integer getId() { return this.id; }
public Integer setId(Integer Id) { this.id = id;}
}
我已经看到了这两种方式的例子。但是,当我运行第二个示例时,我得到以下...
java.lang.NullPointerException 在 com.widget.util.hibernate.HibernateSessionFactory$ThreadLocalSession.initialValue(HibernateSessionFactory.java:25) 在 com.widget.util.hibernate.HibernateSessionFactory$ThreadLocalSession.initialValue(HibernateSessionFactory.java:1) 在 java.lang.ThreadLocal$ThreadLocalMap.getAfterMiss(未知来源) 在 java.lang.ThreadLocal$ThreadLocalMap.get(未知来源) 在 java.lang.ThreadLocal$ThreadLocalMap.access$000(未知来源) 在 java.lang.ThreadLocal.get(未知来源) 在 com.widget.util.hibernate.HibernateSessionFactory.get(HibernateSessionFactory.java:33) 在 com.widget.db.dao.AbstractDao.(AbstractDao.java:12) 在 com.widget.db.dao.WidgetDao.(WidgetDao.java:9) 在 com.widget.db.dao.test.WidgetDaoTest.findById(WidgetDaoTest.java:17) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在 java.lang.reflect.Method.invoke(未知来源) ...这是HibernateSessionFactory 的骨架(第 25 行已标记)....
protected Session initialValue() {
SessionFactory sessionFactory = null;
try {
Configuration cfg = new AnnotationConfiguration().configure();
String url = System.getProperty("jdbc.url");
if (url != null) {
cfg.setProperty("hibernate.connection.url", url);
}
sessionFactory = cfg.buildSessionFactory();
}
catch (Exception e) {
}
Session session = sessionFactory.openSession(); // LINE 25
return session;
}
有人知道这里发生了什么吗?
【问题讨论】:
-
也许你在第 22 行的 catch 块中吞下了一个异常?
标签: java hibernate annotations