我正在使用 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 属性一样。我检查了是否更改了源...但事实并非如此。一切都和以前一样,没有任何异常(exception)。 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)类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;
}
最佳答案
您永远不会看到插入到数据库中的字符串的值,您将始终将它们视为问号(?),有嗅探器会显示其内容,但在标准 hibernate 中您将看不到任何值。
关于java - hibernate 不再工作......为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2095096/