17:12:02,609 INFO QueryCache:39 - starting query cache at region: net.sf.hibernate.cache.QueryCache
net.sf.hibernate.QueryException: could not resolve property: authorid of:
无法识别authorid属性.
还有你写的HQL语句到底想查询什么内容
net.sf.hibernate.QueryException: could not resolve property: authorid of:
无法识别authorid属性.
还有你写的HQL语句到底想查询什么内容
解决方案 »
- 怎样crc8校验算法怎么写啊?
- java实时通信的问题
- c#调用Java webservice中返回值为list<map>的具体方法
- [求助]如何将汉字转换为数字
- 在学习AWT图形处理的时候,对那个paint有些不理解。
- java串囗程序打包问题
- JSP如何实现调用客户端的exe程序??在线等待!!
- eclipse2.1.2+myeclipse2.6.4+tomcat5.0.28,tomcat无法启动?
- 如何从一段java代码中查询空白行数等,请指教
- hibernate一对多,保存对象没有外键字段值
- Tomcat中的用户信息放在什么地方呀?我现在不知道管理员密码了,该怎么办?
- 使用Ant打包jar文件的问题
=======
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="com.javamodel.hibernate.Author" table="author">
<id name="id" column="id">
<generator class="foreign">
<param name="property">person</param>
</generator>
</id>
<property name="alias" column="alias"/>
<one-to-one name="person" class="com.javamodel.hibernate.Person" cascade="all" constrained="true"/>
<set name="publications" lazy="true" inverse="true" cascade="all">
<key column="authorid"/>
<one-to-many class="com.javamodel.hibernate.Publication"/>
</set>
<set name="works" table="author_work">
<key column="author_id"/>
<many-to-many column="work_id" class="com.javamodel.hibernate.Work"/>
</set>
</class>
</hibernate-mapping>=======person.hbm.xml
=======
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping>
<class name="com.javamodel.hibernate.Person" table="person">
<id name="id">
<column name="id" length="40"/>
<generator class="uuid.hex"/>
</id>
<property name="name" column="name" />
<property name="email" column="email" />
</class>
</hibernate-mapping>
=======Publication.hbm.xml
=======
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="com.javamodel.hibernate.Publication" table="publication">
<id name="id" column="id">
<generator class="uuid.hex"/>
</id>
<property name="bookName" column="bookname"/>
<property name="dataTime" column="datatime"/>
<many-to-one name="author" column="authorid"/>
</class>
</hibernate-mapping>
=======Work.hbm.xml
=======
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="com.javamodel.hibernate.Work" table="work">
<id name="id" column="id">
<generator class="uuid.hex"/>
</id>
<property name="title" column="title"/>
<set name="authors" table="author_work" inverse="true">
<key column="work_id"/>
<many-to-many column="author_id" class="com.javamodel.hibernate.Author"/>
</set>
</class>
</hibernate-mapping>
=======
author.java--------
package com.javamodel.hibernate;import java.util.HashSet;
import java.util.Set;
/**
*
* @hibernate.class
* table="author"
* dynamic-update="true"
* dynamic-insert="true"
* 这个类对应的表是author
*/public class Author {
private String id;
private String alias=null;
private Person person=null;
private Set publications=new HashSet();
private Set works = new HashSet();
/**
*
* @hibernate.property
* length="20"
* 声明表中对应的字段
*/
public String getAlias() {
return alias;
}
/**
*
* @hibernate.id
* unsaved-value="null" generator-class="foreign"
* 定义外键
* @hibernate.generator-parm
* name="property" value="person"
* 对应的Author对应的属性
*/ public String getId() {
return id;
} /**
*
* @hibernate.one-to-one
* cascade="all" constrained="true"
* 在Author与Person之间,声明one-to-one的关联关系
*/
public Person getPerson() {
return person;
} /**
* @param string
*/
public void setAlias(String string) {
alias = string;
} /**
* @param string
*/
public void setId(String string) {
id = string;
} /**
* @param person
*/
public void setPerson(Person person) {
this.person = person;
} /**
*
* @hibernate.set
* lazy="true" inverse="true" cascade="all"
* 定义Hibernate<set>collection
* @hibernate.collection-key
* column="authorid"
* 对应表中的字段
* @hibernate.collection-one-to-many
* class="com.javamodel.hibernate.Publication"
* 在Author与Publication之间,声明one-to-many的关联关系
*/
public Set getPublications() {
return publications;
} /**
* @param set
*/
public void setPublications(Set set) {
publications = set;
} /**
*
* @hibernate.set
* lazy="true"
* table="author_work"
* @hibernate.collection-key
* @column="author_id"
* @hibernate.collection-many-to-many
* column="work_id"
* class="com.javamodel.hibernate.Work"
*/
public Set getWorks() {
return works;
} /**
* @param set
*/
public void setWorks(Set set) {
works = set;
}}--------Person.java---------
package com.javamodel.hibernate;
public class Person {
private String id = null;
private String name = null;
private String email = null; /**
* @return
*/
public String getEmail() {
return email;
} /**
* @return
*/
public String getId() {
return id;
} /**
* @return
*/
public String getName() {
return name;
} /**
* @param string
*/
public void setEmail(String string) {
email = string;
} /**
* @param string
*/
public void setId(String string) {
id = string;
} /**
* @param string
*/
public void setName(String string) {
name = string;
}}---------Publication.java
---------
package com.javamodel.hibernate;public class Publication {
private String id = null;
private String bookName = null;
private String dataTime = null;
private String authorId = null;
private Author author = null; /**
* @return
*/
public Author getAuthor() {
return author;
}/**
* @return
*/
public String getAuthorId() {
return authorId;
}/**
* @return
*/
public String getBookName() {
return bookName;
}/**
* @return
*/
public String getDataTime() {
return dataTime;
}/**
* @return
*/
public String getId() {
return id;
}/**
* @param author
*/
public void setAuthor(Author author) {
this.author = author;
}/**
* @param string
*/
public void setAuthorId(String string) {
authorId = string;
}/**
* @param string
*/
public void setBookName(String string) {
bookName = string;
}/**
* @param string
*/
public void setDataTime(String string) {
dataTime = string;
}/**
* @param string
*/
public void setId(String string) {
id = string;
}}---------Work.java
--------
package com.javamodel.hibernate;import java.util.HashSet;
import java.util.Set;
public class Work {
private String id=null;
private String title=null;
private Set authors=new HashSet(); /**
* @return
*/
public Set getAuthors() {
return authors;
} /**
* @return
*/
public String getId() {
return id;
} /**
* @return
*/
public String getTitle() {
return title;
} /**
* @param set
*/
public void setAuthors(Set set) {
authors = set;
} /**
* @param string
*/
public void setId(String string) {
id = string;
} /**
* @param string
*/
public void setTitle(String string) {
title = string;
}}-------
象你的需求,
person<-one-to-one->author
author<-ont-to-many->publication
再好实现不过了,自己去看hibernate的文档吧,上面有例子
我的又不是many-to-many?为什么要中间表呢?hibernate的文档看过N遍了,说说你是怎么实现的,OK?
net.sf.hibernate.QueryException: could not resolve property: authorid
在看看你这两段配置:
<set name="publications" lazy="true" inverse="true" cascade="all">
<key column="authorid"/>
<one-to-many class="com.javamodel.hibernate.Publication"/><many-to-one name="author" column="authorid"/>
看出问题了么?