【发布时间】:2017-09-27 13:39:28
【问题描述】:
我有两个对象 User 和 House。一个用户可以拥有多个房屋。
来自House.class的注解:
@Entity
@Table(name="house")
public class House {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="house_id")
private int id;
@ManyToOne
@JoinColumn(name="user_id")
private User user;
@Column(name="country")
private String country;
@Column(name="city")
private String city;
@Column(name="street")
private String street;
@Column(name="post_code")
private String postCode;
@Column(name="house_number")
private String houseNumber;
@Column(name="flats")
private int flats;
@Column(name="picture")
private String picture;
@Column(name="surname_first") // order names will be written in receipt
private Boolean writeSurnameFirst;
@Column(name="cut_name") // Nado ili net sokrashat imena
private Boolean cutName;
@ManyToOne
@JoinColumn(name="currency_id")
private Currency currency;
@ManyToOne
@JoinColumn(name="documentation_lang_id")
private Languages documentationLang;
@Column(name="default_house")
private Boolean defaultHouse;
我需要基于User 和列defaultHouse = true 获取House 对象。
我试过这段代码,但我不知道如何在其中实现User:
tx = sess.beginTransaction();
// create criteria builder
CriteriaBuilder builder = sess.getCriteriaBuilder();
// create criteria
CriteriaQuery<House> query = builder.createQuery(House.class);
// specify criteria root
Root<House> root = query.from(House.class);
query.select(root).where(builder.equal(root.get("default_house"), true)
.and(builder.equal(root.get(House.getUser), user)));
house = sess.createQuery(query).getSingleResult();
tx.commit();
【问题讨论】:
标签: java hibernate jpa criteria