我正在用hibernate做简单的事情,因为我必须为项目学习它。我创建了这个简单的例子:
package hibtests;
import hibtests.beans.newBean;
import org.hibernate.Session;
/**
*
* @author dario
*/
public class Main {
public void test(){
Session session = NewHibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
newBean nb = new newBean();
nb.setNome("FooFoo");
session.save(nb);
session.getTransaction().commit();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Main main = new Main();
main.test();
}
}
...它工作正常,将行放入数据库。然后我在另一堂课上工作了几个小时。我再次尝试这个例子,Hibernate提出了这个奇怪的问题:
Hibernate:
insert
into
TEST
(ID, NOME)
values
(default, ?)
Hibernate:
values
identity_val_local()
喜欢它只是无法读取属于FooFoo的属性。我检查了我是否改变了源......但事实并非如此。一切都像以前一样,没有例外。 newBean实例不为null,FooFoo位于Nome字段中。为什么这样?
哦,我忘记了,我正在使用Netbeans 6.8和JavaDB。
根据要求,我的映射如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="hibtests.beans.newBean" table="APP.TEST">
<id name="id" column="ID">
<generator class="identity"/>
</id>
<property name="nome" column="NOME" type="string"/>
</class>
</hibernate-mapping>
最后一分钟更新:结果是正在运行。无论如何我仍然可以看到查询?而不是字符串。为什么呢?
请求的newbean源代码如下:
public class newBean {
Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
String nome;
}
答案 0 :(得分:1)
您永远不会看到在DB中插入字符串的值,您将始终将它们视为问号(?)有嗅探器将显示其内容,但在标准休眠中您将看不到任何值。 / p>