sqlGrammarException: could not extract ResultSet
@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long>{
@Query(value = "SELECT e.dob, e.name, e.marital FROM employee e\n" +
"JOIN empuser eu ON e.empid = eu.empid \n" +
"JOIN user u ON u.uid = eu.empid WHERE u.uid = = :uid", nativeQuery = true)
public Employee findEmployeeByUid(@Param("uid") long uid);
}
@Getter
@Setter
@Entity
@Table(name="employee")
public class Employee implements Serializable{
@Id
@Column(name="empid")
@GeneratedValue(strategy=GenerationType.IDENTITY)
long empId;
String name;
Date dob;
char gender;
String marital;
String nationality;
String photoFile;
//joining employee with address
@ManyToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@JoinTable
(
name="tempaddress",
joinColumns=@JoinColumn(name="empid"),
inverseJoinColumns=@JoinColumn(name="aid")
)
Address tempAddress;
//joining employee with address
@ManyToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@JoinTable
(
name="permaaddress",
joinColumns=@JoinColumn(name="empid"),
inverseJoinColumns=@JoinColumn(name="aid")
)
Address permaAddress;
//joining employee with contact
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@JoinTable
(
name="empcontact",
joinColumns=@JoinColumn(name="empid"),
inverseJoinColumns=@JoinColumn(name="cid")
)
List <Contact> EmpContact;
//joining employee with familydetail
@OneToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@JoinTable
(
name="empfamilydetail",
joinColumns=@JoinColumn(name="empid"),
inverseJoinColumns=@JoinColumn(name="fid")
)
FamilyDetail EmpFamilyDetail;
//joining employee with Health
@OneToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@JoinTable
(
name="emphealth",
joinColumns=@JoinColumn(name="empid"),
inverseJoinColumns=@JoinColumn(name="hid")
)
Health EmpHealth;
//joining employee with OfficeDetail
@OneToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@JoinTable
(
name="empofficedetail",
joinColumns=@JoinColumn(name="empid"),
inverseJoinColumns=@JoinColumn(name="oid")
)
OfficeDetail EmpOfficeDetail;
//joining employee with team
@ManyToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@JoinTable
(
name="empteam",
joinColumns=@JoinColumn(name="empid"),
inverseJoinColumns=@JoinColumn(name="tid")
)
Set <Team> empteam;
//joining employee with IdentityDocuments
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@JoinTable
(
name="empidentitydocuments",
joinColumns=@JoinColumn(name="empid"),
inverseJoinColumns=@JoinColumn(name="iid")
)
List <IdentityDocuments> EmpIdentityDocuments;
//joining employee with education
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(
name="empdetails",
joinColumns = @JoinColumn(name="empid"),
inverseJoinColumns = @JoinColumn(name="eid")
)
List<Education> empDetails;
//joining employee with role
@OneToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@JoinTable
(
name="emprole",
joinColumns=@JoinColumn(name="empid"),
inverseJoinColumns=@JoinColumn(name="rid")
)
Role EmpRole;
//joining employee with user
@OneToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@JoinTable
(
name="empuser",
joinColumns=@JoinColumn(name="empid"),
inverseJoinColumns=@JoinColumn(name="uid")
)
User EmpUser;
//Joining Employee with Attendance
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@JoinTable
(
name="empattendance",
joinColumns=@JoinColumn(name="empid"),
inverseJoinColumns=@JoinColumn(name="attenid")
)
List<Attendance> EmpAttendance;
//Joining Employee with LeaveUsed
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@JoinTable
(
name="empleaveused",
joinColumns=@JoinColumn(name="lusedid"),
inverseJoinColumns=@JoinColumn(name="leaveid")
)
List<LeaveUsed> EmpLeaveUsed;
用户实体类:
@Getter
@Setter
@Table(name="user")
@Entity
public class User implements Serializable{
@Id
@Column(name="uid")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long uid;
private String userName;
private String password;
private boolean enabled;
private Date lastLogin;
//joining user with role
@OneToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@JoinTable
(
name="user_role",
joinColumns=@JoinColumn(name="uid"),
inverseJoinColumns=@JoinColumn(name="rid")
)
Role user_role;
感谢任何帮助。多谢了。
通常,JPA方法签名是list
,而不仅仅是employee
。但是,由于您使用的是本机查询,返回类型应为list
,因此请使用此版本:
@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
@Query(value = "SELECT e.dob, e.name, e.marital FROM employee e\n" +
"JOIN empuser eu ON e.empid = eu.empid \n" +
"JOIN user u ON u.uid = eu.empid WHERE u.uid = = :uid", nativeQuery = true)
public List<Object[]> findEmployeeByUid(@Param("uid") long uid);
}
当访问上面列表中的每个object[]
中的各个组件时,您需要进行一些手动封送处理。例如,要访问员工姓名:
List<Object[]> employees = employeeRepository.findEmployeeByUid(123L);
for (Object[] emp : employees) {
String name = (String)emp[1];
}
本机查询经常需要这样的不吸引人的代码,所以我建议如果可能的话尝试使用纯JPA来表达您的查询。
问题内容: 我有一个带有表的数据库,该表充满了用于检查另一个数据库的条件和错误消息。 我想运行一个循环,以便对照第二个数据库中的所有表检查所有这些条件,并生成一个给出错误的报告。 这是可能的ms访问。 例如, querycrit表 我有超过400个类似这样的不同变量的查询。 我针对其运行查询的表是 记录表 问题答案: 这是更多示例代码。它说明了两种不同类型的记录集的用法。您可能希望阅读VBA陷阱:
提前感谢! UPDATE:这是两个不同的查询,而不是delete查询中的语句。
我遇到了一个奇怪的问题,使用Oracle Pivot语法的sql查询。我可以毫无问题地在SqlDeveloper中运行查询;然而,使用行映射器通过JdbcTemplate运行它会产生关于无效列名的奇怪错误。 SQL语句: 行映射器: DAO调用类:
问题内容: 我有一张table: 我想构造一个语句,给定一个事件可以返回从该事件开始的事件“运行”的长度。运行由以下方式定义: 如果两个事件之间的时间间隔不超过30秒,则两个事件将同时运行。 如果A和B一起运行,并且B和C一起运行,则A与C一起运行。 但是,我的查询不需要在时间上倒退,因此,如果我选择事件2,则仅将事件2、3和4计为从2开始的事件运行的一部分,而应将3作为事件返回。运行时间。 有任
他们说现在com.hp.hpl.jena.sparql.Engine.Binding.BindingMap在这个版本中不是一个简单的类,而是一个接口。 如果是这样,那么如何在当前版本中运行sparql查询。请根据我分享的代码给出一个例子。提前道谢。
connection方法似乎工作得很好,但当它执行调用“ExecuteQuery(sql)”方法的方法时,它会抛出SQLException。 我想我把jdbc驱动程序、ojdbc库和数据库配置得很好,但是我找不到为什么方法没有完成它的工作。有线索吗? 堆栈跟踪: