Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在不使用主键的情况下使用hibernate获取数据库记录_Java_Mysql_Hibernate - Fatal编程技术网

Java 在不使用主键的情况下使用hibernate获取数据库记录

Java 在不使用主键的情况下使用hibernate获取数据库记录,java,mysql,hibernate,Java,Mysql,Hibernate,我想为我创建的表从数据库中获取不带主键的记录。这是它的模型类 @Entity @Table(name = "DOCTORS_INFORMATION") public class DoctorInformation { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "DOCTOR_ID") private int ID; @Column(name = "FIRST_NAME") private Strin

我想为我创建的表从数据库中获取不带主键的记录。这是它的模型类

@Entity
@Table(name = "DOCTORS_INFORMATION")
 public class DoctorInformation {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "DOCTOR_ID")
private int ID;

@Column(name = "FIRST_NAME")
private String firstName;

@Column(name = "LAST_NAME")
private String lastName;

@Column(name = "ADDRESS_LINE1")
private String addressLine1;

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "CITY")
private Location location;
//along with setters and getters
很难记住每个医生的医生Id,从逻辑上讲,名字或任何东西都不能成为主键。我看过的所有教程和讲座视频都使用session.get获取记录,其中session是课堂会话的对象。在Session类的源代码中,
get
mandatory的所有重载方法都将id作为参数。。。
它们是解决上述问题的方法吗?

有多种选择。以下所有示例都搜索姓氏包含约翰逊的医生

标准

String lastNameToSearchFor = "Johnson";
List doctors = session.createCriteria(DoctorInformation.class)
     .add( Restrictions.like("lastName", "%"+lastNameToSearchFor+"%") ) // the leading wild card can become a problem since it cannot be indexed by the DB!
     .addOrder( Order.asc("lastName") )
     .list();
HQL

String lastNameToSearchFor = "Johnson";
String hql = "FROM " + DoctorInformation.class.getName() + " di WHERE di.lastName LIKE :lastName ORDER BY di.lastName ASC";
Query query = session.createQuery(hql);
query.setParameter("lastName", "%" + lastNameToSearchFor + "%"); // again, the leading wild card may be a problem
List doctors = query.list();
String lastNameToSearchFor = "Johnson";
String sql = "SELECT * FROM DOCTORS_INFORMATION WHERE lastName LIKE :lastName ORDER BY lastName ASC";
Query query = session.createSQLQuery(sql).addEntity(DoctorInformation.class);
query.setString("lastName", "%" + lastNameToSearchFor + "%"); // again, the leading wild card may be a problem
List doctors = query.list();
本机SQL

String lastNameToSearchFor = "Johnson";
String hql = "FROM " + DoctorInformation.class.getName() + " di WHERE di.lastName LIKE :lastName ORDER BY di.lastName ASC";
Query query = session.createQuery(hql);
query.setParameter("lastName", "%" + lastNameToSearchFor + "%"); // again, the leading wild card may be a problem
List doctors = query.list();
String lastNameToSearchFor = "Johnson";
String sql = "SELECT * FROM DOCTORS_INFORMATION WHERE lastName LIKE :lastName ORDER BY lastName ASC";
Query query = session.createSQLQuery(sql).addEntity(DoctorInformation.class);
query.setString("lastName", "%" + lastNameToSearchFor + "%"); // again, the leading wild card may be a problem
List doctors = query.list();

如果您想添加搜索功能,比如firstName,那么您可能需要研究Hibernate的析取:

有多个选项。以下所有示例都搜索姓氏包含约翰逊的医生

标准

String lastNameToSearchFor = "Johnson";
List doctors = session.createCriteria(DoctorInformation.class)
     .add( Restrictions.like("lastName", "%"+lastNameToSearchFor+"%") ) // the leading wild card can become a problem since it cannot be indexed by the DB!
     .addOrder( Order.asc("lastName") )
     .list();
HQL

String lastNameToSearchFor = "Johnson";
String hql = "FROM " + DoctorInformation.class.getName() + " di WHERE di.lastName LIKE :lastName ORDER BY di.lastName ASC";
Query query = session.createQuery(hql);
query.setParameter("lastName", "%" + lastNameToSearchFor + "%"); // again, the leading wild card may be a problem
List doctors = query.list();
String lastNameToSearchFor = "Johnson";
String sql = "SELECT * FROM DOCTORS_INFORMATION WHERE lastName LIKE :lastName ORDER BY lastName ASC";
Query query = session.createSQLQuery(sql).addEntity(DoctorInformation.class);
query.setString("lastName", "%" + lastNameToSearchFor + "%"); // again, the leading wild card may be a problem
List doctors = query.list();
本机SQL

String lastNameToSearchFor = "Johnson";
String hql = "FROM " + DoctorInformation.class.getName() + " di WHERE di.lastName LIKE :lastName ORDER BY di.lastName ASC";
Query query = session.createQuery(hql);
query.setParameter("lastName", "%" + lastNameToSearchFor + "%"); // again, the leading wild card may be a problem
List doctors = query.list();
String lastNameToSearchFor = "Johnson";
String sql = "SELECT * FROM DOCTORS_INFORMATION WHERE lastName LIKE :lastName ORDER BY lastName ASC";
Query query = session.createSQLQuery(sql).addEntity(DoctorInformation.class);
query.setString("lastName", "%" + lastNameToSearchFor + "%"); // again, the leading wild card may be a problem
List doctors = query.list();

如果您想添加搜索功能,比如firstName,那么您可能需要研究Hibernate的析取:

DAO的代码在哪里?为什么不使用HQL?DAO的代码在哪里?为什么不使用HQL?我不知道HQL,谢谢!我不知道HQL,谢谢!