報錯:Unable to locate Attribute with the the given name [rombokid.room_id] on this ManagedType [Hibernate.domain.Rom_bok]
這個是聯合主鍵的類:
package Hibernate.domain;
import java.io.Serializable;
public class Rom_bok_id implements Serializable{
private Long room_id;
private Long booking_id;
public void setroom_id(Long room_id) {
this.room_id=room_id;
}
public Long getroom_id() {
return this.room_id;
}
public void setbooking_id(Long booking_id) {
this.booking_id=booking_id;
}
public Long getbooking_id() {
return this.booking_id;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((room_id == null) ? 0 : room_id.hashCode());
result = prime * result + ((booking_id == null) ? 0 : booking_id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Rom_bok_id other = (Rom_bok_id) obj;
if (room_id == null) {
if (other.room_id != null)
return false;
} else if (!room_id.equals(other.room_id))
return false;
if (booking_id == null) {
if (other.booking_id != null)
return false;
} else if (!booking_id.equals(other.booking_id))
return false;
return true;
}
}
這是映射類
package Hibernate.domain;
public class Rom_bok{
private Booking booking;
private Room room;
private boolean booked;
private Rom_bok_id rombokid;
public Rom_bok_id getrombokid() {
return rombokid;
}
public void setrombokid(Rom_bok_id rombokid) {
this.rombokid = rombokid;
}
public Booking getbooking() {
return this.booking;
}
public void setbooking(Booking booking) {
this.booking = booking;
}
public void setroom(Room room) {
this.room=room;
}
public Room getroom() {
return this.room;
}
public void setbooked(boolean booked) {
this.booked=booked;
}
public boolean getbooked() {
return this.booked;
}
}
映射檔案如下:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="Hibernate.domain">
<class name="Hibernate.domain.Rom_bok" table="rom_bok" catalog="hotel">
<composite-id name="rombokid" class="Rom_bok_id">
<key-property name="booking_id"></key-property>
<key-property name="room_id"></key-property>
</composite-id>
<many-to-one name="booking" class="Hibernate.domain.Booking" insert="false" update="false" >
<column name="booking_id"></column>
</many-to-one>
<many-to-one name="room" class="Hibernate.domain.Room" insert="false" update="false" >
<column name="room_id"></column>
</many-to-one>
<property name="booked" type="java.lang.Boolean">
<column name="booked" />
</property>
</class>
</hibernate-mapping>
查詢方法如下
public void findCustomerByRoomId(Long room_id) {
Session session = HotelCmiHibernateSessionFactory.getSession();
Transaction transaction = session.beginTransaction();
// (1) 直接使用Hibernate的CRUD功能
CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery<Rom_bok> criteria = builder.createQuery(Rom_bok.class);
Root<Rom_bok> root =criteria.from(Rom_bok.class);
criteria.select(root.get("rombokid"));
criteria.where(builder.equal(root.get("rombokid.room_id"),room_id));
Query<Rom_bok> query=session.createQuery(criteria);
Rom_bok m = query.uniqueResult();
Rom_bok_id rbi = m.getrombokid();
System.out.println(rbi.getbooking_id());
transaction.commit();
session.close();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/118813.html
標籤:Java EE
上一篇:使用tomcat熱部署出現Tomcat return http status error: 405, Reason Phrase: Not Allowed
下一篇:希爾排序出錯
