在休眠中我可以做到以下
Query q = session.createQuery("from Employee as e);
List<Employee> emps = q.list();
Run Code Online (Sandbox Code Playgroud)
现在如果我想获取int和String我该怎么办?
Query q = session.createQuery(""SELECT E.firstName,E.ID FROM Employee E";
List ans = q.list();
Run Code Online (Sandbox Code Playgroud)
现在列表的结构是什么?
我有一个SQL查询如下:
List<Employee> employees = getCurrentSession()
.createSQLQuery(
"select"
+ e.id as id,e.first_name as firstName,e.password as password
+ "from employee e,employee_role er,role r where e.employee_id=er.employee_id and er.role_id=r.role_id and r.name='ROLE_ADMIN' ")
.setResultTransformer(Transformers.aliasToBean(Employee.class))
.list();
Run Code Online (Sandbox Code Playgroud)
我在Employee中有一个名为firstName的属性,但是当在单元测试中尝试在dao上运行时,我收到以下异常:
org.hibernate.PropertyNotFoundException: Could not find setter for firstname on class com.app.domain.Employee
Run Code Online (Sandbox Code Playgroud)
我不知道hibernate从这个firstname属性中得到了什么?我的查询中没有对它?
任何方式的解决方法是将属性更改为firstname,getter,setter,但任何想法为什么hibernate正在进行此类行为,以及如何避免它,因为我想在我的域中使用camelCase,请指教.
我在使用hibernate的基于spring框架的Web应用程序的控制器中获得此异常.我已经尝试了很多方法来解决这个问题,但无法解决它.
在控制器的方法中,handleRequestInternal对数据库的调用主要是为了"读取",除非它是一个提交动作.我一直在使用,Spring的Session但是转移到getHibernateTemplate()了,问题仍然存在.
基本上,这对数据库的第二次调用会抛出此异常.那是:
1)getEquipmentsByNumber(number) {首先,基于'number'从DB获取设备,其具有属性列表,并且每个属性具有值列表.我循环遍历这些值(原始对象字符串)以读入变量)
2)getMaterialById(id){基于id获取材料}
我确实理解第二次调用很可能是使会话"刷新",但我只是"读取"对象,那么为什么第二次调用会在Equipment属性上抛出过时的对象状态异常,如果没有任何改变的话?
我无法在调用后清除缓存,因为它会导致我传递给视图的对象上的LazyExceptions.
我读过这个:https: //forums.hibernate.org/viewtopic.php?f = 1&t = 99635&start = 0 但根据提供的建议无法解决问题.
我该如何解决这个问题?任何想法和想法都表示赞赏.
更新:
我刚刚测试的是,在getEquipmentsByNumber()从属性列表中读取变量后的函数中,我这样做:getHibernateTemplate().flush();现在异常就在这一行而不是调用fetch材料(即getMaterialById(id)).
更新: 在显式调用flush之前,我从会话缓存中删除对象,以便缓存中没有过时的对象.
getHibernateTemplate().evict(equipment);
getHibernateTemplate().flush();
Run Code Online (Sandbox Code Playgroud)
好的,现在问题已经转移到我执行此操作后从DB中的下一次提取.我想我必须将方法标记为已同步,并在我阅读完内容后立即逐出对象!听起来不太好.
更新:
使handleRequestInternal方法"同步".错误消失了.当然,不是最好的解决方案,而是做什么!试图handleRequestInternal关闭当前会话并打开一个新会话.但它会导致应用程序的其他部分无法正常工作.试图使用ThreadLocal那也不起作用.
双击eclipse左侧的蓝色条设置断点.再次双击删除断点.这对我来说很有用,但是如果我使用git来检查不同的分支,那么断点的蓝点常常会"混乱"或者其他东西.我再也不能双击以取消它们.我被迫进入调试透视图,在"断点"视图中找到断点,然后右键单击并删除.有没有人有一个更简单的解决方案?我正在使用Windows 7中的java进行编码以获得它的价值.
我可以使用此代码重现此错误(假设if是第1行):
if(bool)
{
// comment
doSomething();
} else {
doOther();
}
Run Code Online (Sandbox Code Playgroud)
我在第4行断点 - doSomething().然后我在if上方放了一条新线,将所有东西都移开.(在第5行移动断点).然后我做git stash save.当我点击回到eclipse时,蓝点显示在正确的行上,但是断点窗口仍然显示第5行.如果我双击以禁用,它实际上在第4行添加了第二个断点.
我觉得我应该向Eclipse人员报告.
我想知道Struts 1.x和Struts 2.x之间的区别
我有2个实体
PayoutHeader.java
@Entity
public class PayoutHeader extends GenericDomain implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column
private Integer month;
@Column
private Integer year;
@OneToOne
private Bank bank;
@Column
private Double tdsPercentage;
@Temporal(javax.persistence.TemporalType.DATE)
private Date **chequeIssuedDate**;
@Temporal(javax.persistence.TemporalType.DATE)
private Date entryDate;
}
Run Code Online (Sandbox Code Playgroud)
PayoutDetails .java
@Entity
public class PayoutDetails {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne
private PayoutHeader payoutHeader;
@Column
private Double amount;
@Column
private String bankName;
@Temporal(javax.persistence.TemporalType.DATE)
private Date clearingDate;
@OneToOne
private Advisor advisor;
@Column
private Long …Run Code Online (Sandbox Code Playgroud) 我需要知道如何使用bag标签,它的目的是什么?
随着23.2版本,我们现在可以使用WRAP_CONTENT的recyclerView高度,这是伟大的.我这样做,但是我想在将项目添加(或删除)到适配器后重新计算高度(从而增加或减少高度).
我的特别RecyclerView是从1个项目开始,然后在用户进行选择时添加项目.所以我需要RecyclerView布局来增加高度,直到一点.理想情况下,当列表增加或减少时,平滑动画会发生这种情况.
WRAP_CONTENT布局后如何制作?
尝试:
recyclerview.requestLayout();
recyclerview.invalidate();
Run Code Online (Sandbox Code Playgroud) 是否有可能同时使用执行更新Criteria的Hibernate?例如:
Session session = getSession();
Criteria crit = session.createCriteria(User.class);
crit.add(Restrictions.eq("token", sessionToken));
User user= new User();
Transaction tx = session.getTransaction();
try
{
tx.begin();
session.updateWithCriteria(user, crit); //my imaginary function
tx.commit();
}
catch (Exception e)
{
e.printStackTrace();
tx.rollback();
}
session.close();
Run Code Online (Sandbox Code Playgroud) 我正在使用 Firebase 开发 Android 应用程序。因此,我想使用 Firebase 身份验证。我有以下要求:
前两个还可以,我是按照基本教程来的。但是,电话号码/密码是这里的问题。Firebase 仅支持电话号码/短信令牌(称为电话身份验证),但没有提及我的情况。我不想破解 Firebase 并使用其实时数据库而不是 Auth 'database'。有没有更好的方法来实现这一目标?
谢谢你。