我在表中有一个列(名为“url”),其值为 URL。有些存储为“ http://www.test.com”,而另一些存储为“ blogspot.sometest.com”(顺便说一句,该表不是我的,所以我无法更改结构)。
在我的项目中,我将“url”列的内容存储为java.net.URL结构化对象的类型属性(例如 Page(String name,URL url);)。所以,如果可以的话,我不想修改这个项目。
我希望使用Hibernate能够获取具有特定 id 的单个记录。示例代码:
@Override
public T selectRow(Serializable id){
T object = null;
try {
openSession();
trns = session.beginTransaction();
criteria = session.createCriteria(cl);
criteria.add(org.hibernate.criterion.Restrictions.eq("doc_id",id));
//THIS LINE OF CODE LAUNCH THE EXCEPTION: org.hibernate.HibernateException: Unable to convert string [4bid.it] to URL : java.net.MalformedURLException: no protocol: 4bid.it
//BECAUSE FOR SOME OF THE URLS THERE IS NO PROTOCOL...
List<T> results = criteria.list();
//SAME WITH THIS
object = (T) criteria.setFirstResult((Integer) id);
//THE NEXT …Run Code Online (Sandbox Code Playgroud) 有人可以告诉我一个如何使用 criteriaBuilder 进行 Hibernate 查询并连接到子查询的示例吗
这是一个简单的例子:
select idSchool, name from user left join (select idSchool from student where age < 15) as NewTable on idSchool = idSchool
Run Code Online (Sandbox Code Playgroud)
谢谢
以下是 mongo 文档结构,
{_id:123,imageShared:{imageId:345,likeCount:2,rateMedia:{rateVal1:1}}}
{_id:124,imageShared:{imageId:346,likeCount:3,rateMedia:{rateVal2:3}}}
{_id:125,imageShared:{imageId:347,likeCount:3}}
Run Code Online (Sandbox Code Playgroud)
现在我需要获取具有rateVal1、rateVal2字段的文档。为此我做了下面的代码...
Query condition = new Query();
condition.addCriteria(
Criteria.where("imageShared.rateMedia.rateVal1").exists(true).
orOperator(Criteria.where("imageShared.rateMedia.rateVal2").exists(true));
Run Code Online (Sandbox Code Playgroud)
我没有收到文档,因为我期望 _id 为 123,124 个文档。
感谢您的帮助。
我的hibernate实体如下:
@Entity
@Table(name = "EditLocks")
public class EditLock extends AuditableEntity {
/** The document that is checked out. */
@OneToOne
@JoinColumn(name = "documentId", nullable = false)
private Document document;
Run Code Online (Sandbox Code Playgroud)
文档然后看起来像这样:
public class Document extends AuditableEntity {
/** Type of the document. */
@ManyToOne
@JoinColumn(name = "documentTypeId", nullable = false)
private DocumentType documentType;
Run Code Online (Sandbox Code Playgroud)
基本上我想写的查询是:
Select * from EditLocks el, Document docs, DocumentTypes dt where el.documentId = docs.id and docs.documentTypeId = dt.id and dt.id = 'xysz';
Run Code Online (Sandbox Code Playgroud)
如何使用hibernate条件api执行此操作?
我有一张Dept桌子和一张Emp桌子.
我需要以这样的方式加入这两个表:where子句看起来像这样:
where dept.deptId = emp.DeptId and dept.deptName = emp.empTrainingName
Run Code Online (Sandbox Code Playgroud)
我试过这个:
Criteria criteria = session.createCriteria(Dept.class).createAlias("empMap","id");
Run Code Online (Sandbox Code Playgroud)
使用它,第一个条件即dept.deptId = emp.DeptId执行.但我不知道如何比较dept.deptName有emp.empTrainingName.
如何使用NHibernate中的Criteria API执行此操作?
我有一个SQL查询:
select * from A
INNER JOIN B
ON A.id = B.id
INNER JOIN C
ON B.id = C.id
INNER JOIN D
ON C.id = D.id
where D.name = 'XYZ'
and D.Sex = 'M'
Run Code Online (Sandbox Code Playgroud)
我一直试图为上面的sql提供hibernate查询条件,但是遇到了问题.任何人都可以帮忙吗?
我在我的mysql数据库2表中:
1.teacher(id(pk),name,phone,email)
2.student(id(pk),teacher'sid(FK),name,phone,email)
Run Code Online (Sandbox Code Playgroud)
学生表有一个外键,老师的,对于老师.id.
我想选择他们的id(teachers.id)与(student.teacher'sid)相同的老师,其中student.name ="Steven".
我创建了两个具有与表相同的类名和属性的类,并且我已经配置了映射.
@Entity
class teacher {
@Id
int id;
String name;
String phone;
String email;
}
@Entity
class student {
@Id
int id;
int teachersid;
String name;
String phone;
String email;
}
Run Code Online (Sandbox Code Playgroud)
我可以通过以下方式选择他的名字是"史蒂文"的学生:
Criteria q = session.createCriteria(student.class).add(
Restrictions.eq("name", "stevens"));
Run Code Online (Sandbox Code Playgroud)
如何能够挽回"史蒂文"的老师?就像是
(select * from teacher(where teacher.id = student.teachersid(where student.name="stevens")))
Run Code Online (Sandbox Code Playgroud)
,但使用Hibernate Criteria Api.
提前致谢!
我有一张person桌子.A person可能有多个kids,也是人.因此,人表之间存在一对多的关系.
我想得到所有至少有一个儿子的人(sex=male).我按照以下标准这样做:
List personsWithSon = sess.createCriteria(Person.class)
.createAlias("kids", "k")
.add( Restrictions.eq("k.sex", "male") )
.list();
Run Code Online (Sandbox Code Playgroud)
只要只有一个儿子,这很好.如果有三个儿子,那么该人将被退回三次.但我只需要一次这个人.我怎样才能对结果做出明确的分析?
我有两个类,它们之间有关系.这些是
com.edfx.adb.persist.Activity:
package com.edfx.adb.persist.entity;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.NaturalId;
@javax.persistence.Entity
@Table(name = "ACTIVITY")
public class Activity extends Entity {
@Transient
private static final long serialVersionUID = 4741665931936809028L;
private String activityId;
private String activityName;
private String activityDescription;
private Customer customer;
private ActivityType activityType;
private boolean active;
private Double mandays;
private Double price;
private String manager;
private List<Participation> participations;
public Activity() { …Run Code Online (Sandbox Code Playgroud) java hibernate-mapping hibernate-annotations hibernate-criteria hibernate-4.x
我是grails的新手,我正在努力寻找解决方案,但我在这里没有发现任何问题......
我想做的是,我的域名中有这个标签:
String platform
String appVersion
String name
String id
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得appVersion列中存储的所有数据?
hibernate ×7
java ×5
criteria ×2
criteria-api ×1
grails ×1
grails-orm ×1
jpa ×1
mongodb ×1
mysql ×1
nhibernate ×1
orm ×1
url ×1