编写这个JPA查询的正确方法是什么?我只是在猜测,因为我在我的JPA书中找不到它。
Query query=em.createQuery("select m from Meeting m where count(m.attendees) = 0");
return query.getResultList();
我目前正在尝试使用Hibernate,但我得到了一个mysql错误!
ERROR org.hibernate.util.JDBCExceptionReporter - You have an error in your
SQL syntax; check the manu
我能够在查询浏览器(my sql)中触发查询,并且能够像下面的SELECT * FROM details WHERE title REGEXP 'dem'那样检索记录;
但是当我在服务器端使用类似类型的代码时,我会给出错误作为意外的标记: REGEXP
在web上搜索后,hibernate似乎不支持REGEXP。但也给出了一些与此无关的解决方案。我只需要在hibernate中通过查询来处理这个问题。
sbQuery.append("select distinct id from deatil id");
sbQuery.append("where ((
在我的hibernate配置中,show_sql属性为'true‘,因为我没有使用日志记录的log4j应用编程接口,所以默认情况下,hibernate会显示带有'?’的查询。tomcat控制台中的标记。
在我的例子中,我需要将hibernate执行的带有参数值的完整log4j查询打印到日志中,但我没有使用sql for logging来配置org.hibernate.SQL和org.hibernate.type的调试级别。
对于日志,我们手动将内容写入文件,所以在这种情况下,谁能告诉我如何将hibernate查询写入日志。
我的课就像
public User{
Long id;
Set<String> roles;
}
如何使用User的角色查询所有"ADMIN"对象
编辑:
我使用Hibernate 3.0.5。已经尝试了大多数显而易见的方法。
from Users where roles in('ADMIN')给出了一个JDBC错误。from Users u where u.roles in('ADMIN')提供类强制转换异常
我认为这可能是这个特定版本的hibernate的问题。
在SQL中,人们可以编写一个查询来搜索一个人的名字,如下所示:
SELECT * FROM Person P WHERE P.Name LIKE N'%ike%'
此查询将使用unicode字符运行(假设名称列和数据库已设置为处理unicode支持)。
我在Hibernate (NHibernate)运行的HQL中有一个类似的查询。生成的查询如下所示:
SELECT P FROM SumTotal.TP.Models.Party.Person P join P.Demographics PD WHERE (PD.LastName LIKE '%カタカ%' )
有一个具有两个日期类型属性的简单实体项:
@Entity
public class Item {
@Id
@GeneratedValue(generator = Constants.ID_GENERATOR)
protected Long id;
@NotNull
protected String name;
@NotNull
protected Date from;
@NotNull
protected Date to
我想使用标准API使用H2数据库的"DATEDIFF"的亲函数。因此,我有下面的代码片段来执行此操作:
CriteriaQuery<Item&g
这是我的Hibernate namedQuery:
@NamedQuery(name = "getLanguagesForIds", query = "select l from Language l where l.languageId in(:ids)")
当我试图执行查询时,Hibernate会抛出异常:
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
我将语言ids作为逗号分隔,就像1,2。有人知道如何解决这个问题吗?
我需要从Hibernate查询中获取字符串,并在稍后处理它(所以我不能用"hibernate.show_sql"解决它)。
我已经看过了,但是通过这个变通方法,我得到了SQL查询字符串,但它并没有显示参数值,而是显示了‘?’……有没有办法获得带有参数值的完整SQL字符串?
我的意思是,有了这个解决方案,我得到了"SELECT * FROM USER WHERE NAME=? AND SURNAME=?",但我需要得到"SELECT * FROM USER WHERE NAME='John' AND SURNAME='Doe'
在使用Hibernate构建查询时,我注意到了一些非常奇怪的事情。如果我对ORDER BY子句使用顺序命名参数,Hibernate将抛出一个QuerySyntaxException (冒号前缀是一个意外的令牌):
createQuery("FROM MyEntity ORDER BY :orderProperty :orderDirection");
但是,当使用普通SQL查询完成此操作时,将创建查询,而不会出现问题:
createSQLQuery("SELECT * FROM my_entity_table ORDER BY :orderProperty :order
让QuerySyntaxException尝试运行这个查询:
public interface SignalRepository extends PagingAndSortingRepository<Signal, Long> {
...
@Query("select p1 from Signal p1 LEFT JOIN Signal p2 "
+ " ON (p1.zoneId = p2.zoneId AND p1.createdAt < p2.createdAt) "
+ " where p2.
我有一个Api类,它包含一个数据列表:
public class Api {
private String id;
@ManyToMany
private List<Data> datas;
}
我有一个扩展crud存储库的ApiRepository,在这里我定义了一个查询:
@Query(value="select api from Api api where :data in (api.datas)")
public List<Api> getDatas(@Param("data") data)
在执行查询
你如何定义一个字段,例如email有一个使用JPA注解的索引。我们在email上需要一个非唯一的键,因为每天在这个字段上有数以百万计的查询,没有键就有点慢。
@Entity
@Table(name="person",
uniqueConstraints=@UniqueConstraint(columnNames={"code", "uid"}))
public class Person {
// Unique on code and uid
public String code;
public String
我有一个简单的hibernate查询,在查询中使用了nolock。我收到错误-一个识别错误发生了,hibernate错误被抛出:'NHibernate.Hql.Ast.ANTLR.QuerySyntaxException‘in NHibernate.dll。不用防盗器就行。我不想用
<property name="connection.isolation">ReadUncommitted</property>
因为我只能在特定的桌子上应用nolock。
以下是hql查询-
select d from Users d with (nolock) w
我正在开发的示例应用程序将所有Hibernate查询都写入Tomcat控制台。我的意思是,如果你在Windows上启动Tomcat,你会打开一个小的applet窗口。Hibernate一直在编写所有的数据访问代码,比如“Hibernate : select table10_.col1 as COL10_,table10_.col2 as COL20_,...”我想知道是否有什么配置可以让Hibernate将这些查询写到某种日志文件中?可能是tomcat/logs下的localhost-log?
我在通过JPA查询数据库时遇到问题。获取异常:
org.hibernate.QueryParameterException: Position beyond number of declared ordinal parameters. Remember that ordinal parameters are 1-based! Position: 1
at org.hibernate.engine.query.spi.ParameterMetadata.getOrdinalParameterDescriptor(ParameterMetadata.java:80)
at org.
我写这个问题是因为我没有找到任何关于如何在Spring中防止SQL注入的有用文章。所有的教程都展示了如何使用这些查询,但是他们没有提到这些可能的攻击。
我有以下查询:
@Repository
public interface UserRepository extends CrudRepository<User, Integer> {
@Query(nativeQuery = true, value = "SELECT * FROM users WHERE email LIKE %:emailAddress%")
public ResponseLis
我想在HQL中执行一个类似于SQL中的查询:
SELECT (
SELECT COUNT(*) FROM EMPLOYER +
SELECT COUNT(*) FROM COMPANIES
)
FROM DUAL
当我在查询中添加“从DUAL”时,会得到一个错误:
org.hibernate.hql.ast.QuerySyntaxException: DUAL is not mapped
如果我放弃了“双重”,我就会得到:
org.hibernate.hql.ast.QuerySyntaxException: unexpected end of subtree
我们有一个用于全文搜索的原生查询,该查询使用了如下所示的GIN索引:
CREATE INDEX idx_column1 ON table1 USING gin (to_tsvector('english', column1));
SELECT *
FROM table1
where to_tsvector('english', column1) @@ to_tsquery('searchedText')
但是,我们无法在HQL中复制此查询,因为符号@上存在hibernate错误。如何在hibernate方言中添加符号@?
我试图打印SQL查询结果,但表示列未找到,
public class SearchDriver {
@Autowired
EntityManager entityManager;
public void search(String key, String value){
List<Driver> resultDerivers = entityManager.createNativeQuery("select * from driver where "+key+"="+value).getResultList();
这是我从CriteriaBuilder得到的hibernate查询:
select generatedAlias0 from MyObject as generatedAlias0 where 1=1 order by COLLATION_KEY(lower(generatedAlias0.mycol), :param0) asc
:param0应该被解析为UCA400R1,但它被解析为:param0。问题出在哪里?
cb.function("COLLATION_KEY', String.class, cb.lower(orderExpression), cb.literal(
我正在使用带hibernate的spring项目,如何使用javax.persistence.Query进行查询
@Override
public List<Bank> balance(String account_name) {
Query query = entityManager.createNativeQuery("SELECT balance from bank WHERE account_name=:account_name", Bank.class);
query.setParameter("account_name",