我正在将一个Object存储到我的数据库中,我想我正在犯一些我看不到的愚蠢错误。我附上一些代码来理解mi问题:
我希望存储在dtabase中的MyObject.java 对象
@Entity
@Table(name = "my_object")
public class MyObject {
private String idName;
@Id
@Column(name = "id", unique = true, length = 50,nullable=false)
public String getIdName() {
return idName;
}
public void setIdName(String idName) {
this.idName = idName;
this.id = idName.hashCode();
}
TestToStoreObject.java
MyObject obj = new MyObject();
obj.setIdName("id");
//More set ...
save(obj);
将对象存储到数据库中的函数
protected void save(MyObject obj) throws DataAccessLayerException {
try{
getHibernateTemplate().save(obj);
} catch (HibernateException e) {
handleException(e);
}
}
这是一个与其他数据类型一起使用的通用函数。所以我猜问题就在于配置文件。例外是:
org.springframework.dao.InvalidDataAccessResourceUsageException:
could not insert: [path.MyObject]; SQL [insert into object (id) values (?)];
nested exception is org.hibernate.exception.SQLGrammarException:
could not insert: [path.MyObject]
这里有更多配置文件:
HibernatePlatform.cfg.xml
<?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>
<mapping class="path.User" />
<mapping class="path.MyObject" />
.........
有人可以帮我吗?提前致谢
答案 0 :(得分:0)
只是一个猜测 - 你已经定义了一个名为Object
的类,并且很有可能你的类Object
和java类{{1}之间存在名称冲突}}。您可能会意外地尝试存储java.lang.Object
。
快速测试:将您的类重构为java.lang.Object
(使用eclipse,netbeans,...)。如果某些名为MyObject
的类型在重构后 未更改,那么我的猜测可能是正确的。
答案 1 :(得分:0)
问题是我在另一个包中有另一个具有相同名称的类,而且它很混乱。对未来的建议:追逐这些小事!!