相关疑难解决方法(0)

如何从Hibernate saveOrUpdate(Object)获取查询(不用于记录)

在Hibernate中有一个规定,您可以从Criteria 如何从Hibernate Criteria API获取SQL(*not*for logging)中获取查询,但我想从Hibernate获取更新/删除查询saveOrUpdate,delete(Object)那么有什么选择吗?

java hibernate

6
推荐指数
1
解决办法
1198
查看次数

如何使用 mysemma 从 querydsl 记录后台生成的 sql 查询

使用mysemma的querydsl显示自动生成的sql查询的任何最佳方式,以便可以轻松查看这些sql查询,并且在使用querydsl时调试sql查询变得容易。

例如: from(qCustomer).where(qCustomer.custId.eq("1"));

我需要知道幕后生成的 sql 并希望记录日志以便我可以轻松调试我的应用程序。

hibernate querydsl spring-data-jpa mysema

6
推荐指数
2
解决办法
5755
查看次数

通过Hibernate-Criteria和Session.save(对象)进行SQL注入

为了避免sql注入,通常可以在HQL中使用位置参数命名参数,因为它在这里进行演示,而stackoverflow也有样本.我想知道在使用时可以采取哪些步骤Criteria.请提供示例代码或有用链接的任何帮助.

编辑
当我们保存对象时呢?比方说,该对象可能有一个String变量,有些人可以为它分配一个易受攻击的SQL查询.

 myObject.setName(somevulnerablesql); session.save(myObject); 
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我们是否必须在分配给对象之前单独检查用户输入?或任何其他步骤,以避免此类SQL注入?

java sql hibernate

5
推荐指数
1
解决办法
4778
查看次数

Hibernate返回重复,因为另一个表具有重复值

所以我有一个Users表,Projects表和User_Roles表.我有一个用户连接到2个项目,但是当我只有一个角色时,它会返回这2个项目,但如果我有2个角色,则返回4个角色(2x2个项目).我如何防止这种情况发生

这是我返回用户项目列表的代码

@Override
public List<Project> retrieve(User user) {
    Criteria criteria = super.createCriteria();
    criteria.addOrder(Order.desc("date"));
    criteria.createCriteria("users").add(Restrictions.eq("id", user.getId()));

    return (List<Project>) criteria.list();
}
Run Code Online (Sandbox Code Playgroud)

用户类中的映射

@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "Users_Projects",
           joinColumns = @JoinColumn(name = "UserID"), inverseJoinColumns =   @JoinColumn(name = "ProjectID"))
public List<Project> getProjects() {
    return projects;
} 

@ElementCollection(fetch = FetchType.EAGER)
@Enumerated(EnumType.STRING)
@Column(name = "RoleType")
@JoinTable(name = "User_Roles", joinColumns = @JoinColumn(name = "UserID"))
public Set<Role> getRoles() {
    return roles;
}
Run Code Online (Sandbox Code Playgroud)

有什么建议在这里有什么问题吗?

TNX

mapping annotations hibernate criteria duplicates

5
推荐指数
1
解决办法
5977
查看次数

捕获JBoss AS 7中hibernate JPA生成的最终SQL查询

我一直在努力在我的项目中捕获一个非常复杂的JPA查询的确切SQL以进行优化,但到目前为止我无法这样做.我尝试了以下方法:

1)通过在logback.xml中添加以下内容并启用show_SQL,尝试通过logback启用hibernate日志

    <logger name="org.hibernate.type" level="ALL" />
 <logger name="org.hibernate" level="TRACE">
    <appender-ref ref="fdpAdminAppender" />
 </logger>
Run Code Online (Sandbox Code Playgroud)

2)尝试使用P6spy-2驱动程序与Jboss AS7和postgres,但只是无法使其工作.它给出了以下例外.

com.p6spy.engine.spy.P6SpyDriver cannot be cast to javax.sql.XADataSource
Run Code Online (Sandbox Code Playgroud)

3)在JBoss AS 7中启用了内置数据源间谍,它确实有效.但是日志显示的数据太多,所有这些对我来说都是无用的,因为它们再次将值附加为"?".即使我可以在这里获得完整的SQL语句,我的问题也将得到解决.

到目前为止,我已经成功完成了第3步,但要么我错过了某些东西,要么就是这样,无论是哪种情况,我的实际目的都没有得到解决.所以请有人帮我从JPA获取实际的SQL查询.我并不关心如何得到它,我只需要得到它.我经历过需要在开发过程中多次验证JPA生成的实际SQL.很奇怪为什么没有标准的方法来做到这一点.

hibernate p6spy jpa-2.0 jboss7.x postgresql-9.2

5
推荐指数
1
解决办法
1万
查看次数

JPA - 以编程方式通过序列递增数字字段

我有一个JPA 2 Web应用程序(Struts 2,Hibernate 4仅作为JPA实现).

当前的要求是将(非id)数字顺序字段(仅对某些行填充)添加到现有实体.根据特定条件插入新行时,我需要将新字段设置为its highest value + 1NULL.

例如:

ID     NEW_FIELD     DESCRIPTION
--------------------------------
1          1           bla bla
2                      bla bla       <--- unmatched: not needed here
3                      bla bla       <--- unmatched: not needed here
4          2           bla bla
5          3           bla bla
6          4           bla bla
7                      bla bla       <--- unmatched: not needed here
8          5           bla bla
9                      bla bla       <--- unmatched: not needed here
10         6           bla bla
Run Code Online (Sandbox Code Playgroud)

在旧的SQL中,它将是这样的:

INSERT INTO myTable ( …
Run Code Online (Sandbox Code Playgroud)

java sql hibernate jpa

5
推荐指数
1
解决办法
3万
查看次数

如何在spring boot中查看schema sql(DDL)?

如何查看Hibernate生成的DDL SQL,以便从JPA映射构建模式?我正在使用嵌入式HSQL数据库.

我尝试了以下内容,但没有一个在Spring-Boot 1.3.5.RELEASE中工作.

那些只显示Hibernate为查询发出的sql.由于以下属性,我正在寻找由Hibernate发布的DDL模式sql:

spring.jpa.hibernate.ddl-auto=create-drop
Run Code Online (Sandbox Code Playgroud)

spring hibernate spring-boot

5
推荐指数
1
解决办法
6032
查看次数

仅显示有效的SQL字符串P6Spy

我正在使用p6spy来记录我的程序生成的sql语句.输出的spy.log文件的格式如下所示:

current time|execution time|category|statement SQL String|effective SQL string
Run Code Online (Sandbox Code Playgroud)

我只是想知道是否有人知道是否有办法改变spy.properties文件并且只有最后一列,即有效的SQL字符串,输出到spy.log文件?我查看了属性文件,但没有找到任何似乎支持这个的东西.

谢谢!

sql p6spy

4
推荐指数
2
解决办法
2889
查看次数

Hibernate中Null引用的查询处理

我正在使用hibernate,我有一个实体

@Entity
@Table(name = "MyEntity")
Class MyEntity {
        @Id
    @GeneratedValue
    private long id;

    @Column(name = "NAME")
    private String name;

    //some more attributes here 

        @OneToOne
    @JoinColumn(name = "PARENT_ID")
        MyEntity parent;

}
Run Code Online (Sandbox Code Playgroud)

我在数据库中有一条记录

id   |  name | parent_id 

125 |   n1  |   null
Run Code Online (Sandbox Code Playgroud)

当我试图用hibernate Query获取此记录时

Select e.id,e.name,e.parent.name from MyEntity e where e.id =125
Run Code Online (Sandbox Code Playgroud)

这个查询返回零记录.因为父在这里是null,所以有任何方法来处理这种情况.谢谢你的建议.

java hibernate jpa

0
推荐指数
1
解决办法
983
查看次数