相关疑难解决方法(0)

如何处理看起来像SQL关键字的SQL列名?

我的一个专栏叫做from.我无法更改名称,因为我没有成功.我是否允许做类似的事情SELECT from FROM TableName或是否有特殊的语法来避免SQL Server混淆?

sql sql-server

212
推荐指数
7
解决办法
26万
查看次数

Hibernate表和列的自动保留字转义

我试图为几个不同的数据库使用一个Hibernate映射:H2,Oracle,MySql.

每个数据库都有一个不同的保留字列表.

我希望Hibernate能够自动转义保留字.

我知道我可以:

  • 使用反引号强制转义(逃避一切只是为了安全)
  • 更改所有标识符,以便它们肯定不是任何数据库中的关键字(使它们变丑)
  • 将模式绑定到一组特定的数据库,转义关键字的并集(如果我添加新的数据库,将会中断)

有更优雅的解决方案吗?

java orm hibernate escaping reserved-words

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

SQL错误:1064,SQLState:创建新实体时为42000

我正在使用Spring mvc Web应用程序,我需要使用Hibernate创建一个城镇.以下是我的城镇模型.

@Entity
@Table(name="town")
public class TownModel {

    @Id
    @Column(name="townid")
    @GeneratedValue 
    private Integer townId;

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

    @Column(name="desc")
    private String townDesc;

    @ManyToOne(optional = true)
    @JoinColumn(name="districtid")
    private DistrictModel districtModel;
}
Run Code Online (Sandbox Code Playgroud)

我有另一个名为district的实体.城镇是区的一部分,一个区可以有多个城镇.以下是我的区域模型:

@Entity
@Table(name="district")
public class DistrictModel {

    @Id
    @Column(name="districtid")
    @GeneratedValue
    private Integer districtId;

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

    @Column(name="desc")
    private String description;

    @OneToMany(mappedBy = "districtModel", fetch = FetchType.EAGER)
    @Fetch(value = FetchMode.SUBSELECT)
    private List<TownModel> townModelList;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用以下Hibernate代码来保存城镇:

Session session = sessionFactory.getCurrentSession();
session.save(townModel);
Run Code Online (Sandbox Code Playgroud)

但它显示错误:

21:22:08,104 WARN  [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (http--127.0.0.1-9090-1) SQL Error: 1064, SQLState: …
Run Code Online (Sandbox Code Playgroud)

java mysql hibernate

8
推荐指数
2
解决办法
2万
查看次数

SQL语句中的语法错误 - H2错误42001

运行此SQL语句时:

select TimeInterval, 
       ((((Timer*60)/1.0)*100)/((10.0*60)/60.0)) as 'Throughput-run_1_8_11' 
from StatExternalData, StatisticDefinition 
where StatisticDefinition.ID=StatExternalData.StatDefId 
      and StatisticName='PSI_CompTran_Successful_Cnt'  
order by TimeInterval asc
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

"select TimeInterval, ((((Timer*60)/1.0)*100)/((10.0*60)/60.0)) as 'Throughput-run_1_8_11'[*] from StatExternalData, StatisticDefinition where StatisticDefinition.ID=StatExternalData.StatDefId and StatisticName='PSI_CompTran_Successful_Cnt'  order by TimeInterval asc"; 
expected "identifier"; [42001-185]
Run Code Online (Sandbox Code Playgroud)

我已经发现[*]表示该语句的哪一部分是不正确的,并且H2错误代码42001表示一个无效的SQL语句,但是我已经敲了几个星期试图弄清楚是什么问题是,有谁有想法?

sql h2

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

org.hibernate.exception.SQLGrammarException:无法执行语句

我在Hibernate上尝试了简单的程序并且遇到了一堆异常.

我无法弄清楚到底出了什么问题.

我有三个班 - 书,读者和使用.最后一个是绑定前两个,依赖一对多.

这是我的main():

public class Appl {
    public static void main(String[] args) {
        Book book = new Book();
        book.setTitle("book01155");
        //
        Reader reader = new Reader();
        reader.setName("reader2");
        //
        Using using = new Using();
        using.setIdBook(book);
        using.setIdReader(reader);
        //
        List<Book> elements = new ArrayList<Book>();
        //
        Session session = null;     
        try {
            session = HibernateUtil.getSessionFactory().openSession();
            session.beginTransaction();
            session.save(book);
            session.save(reader);
            session.save(using);
            elements = session.createCriteria(Book.class).list();
            session.getTransaction().commit();
        } finally {
            if (session != null && session.isOpen()) {
                session.close();
            }
        }
        for (Book b : …
Run Code Online (Sandbox Code Playgroud)

java hibernate exception

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

JPA:当我尝试持久化对象时出现奇怪的错误

我得到了和OneToMany之间的关系UserGroup
Group.java

@Entity
public class Group {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)        
private Long id;

private String groupid;

@ManyToOne
@JoinColumn(name="USER_FK")
private User user;
...
}
Run Code Online (Sandbox Code Playgroud)

User.java

@Entity
public class User {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)    
private Long id;

private String userId;

private String password;

private String fname;

private String lname;

@OneToMany(mappedBy="user", cascade=CascadeType.ALL)
private List<Group> groups;

public void addGroup(Group group){
    if(this.groups == null){
        this.groups = new ArrayList<Group>();
    }
    this.groups.add(group);
    group.setUser(this);
}
}
Run Code Online (Sandbox Code Playgroud)

所以当我试图坚持这个对象时

    User user = em.find(User.class, 1L); …
Run Code Online (Sandbox Code Playgroud)

java orm jpa foreign-keys java-ee

4
推荐指数
1
解决办法
3230
查看次数

"您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以获得正确的语法错误"Hibernate 4

我在使用Hibernate 4.1MySQL 5文件夹实体保存到数据库时收到了我在下面添加的错误.我对其他权利没有任何问题.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax
Run Code Online (Sandbox Code Playgroud)

这是我的文件夹表:

CREATE TABLE `folder` (
  `folder_id` int(11) NOT NULL AUTO_INCREMENT,
  `folder_name` varchar(45) COLLATE utf8_turkish_ci NOT NULL,
  `order` int(11) DEFAULT NULL,
  PRIMARY KEY (`folder_id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci$$
Run Code Online (Sandbox Code Playgroud)

我的文件夹实体:

    @Entity
    @Table(name = "folder")
    public class Folder implements Serializable{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "folder_id", nullable = false, …
Run Code Online (Sandbox Code Playgroud)

mysql spring hibernate mysql5

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

在 Spring Boot 上使用正确的方言 PostgreSQL

我有一个名为的实体User,它通向一个名为的表,该表user在 PostgreSQL 中应该用引号括起来才能工作。我知道我可以指定一个自定义表名,但是 Hibernate 不应该自动做引号吗?

有人告诉我,也许 Hibernate 没有使用 PostgreSQL 方言。当我的数据库配置如下时,这可能吗:

spring.datasource.url = jdbc:postgresql://localhost/database_name
spring.datasource.username = username
spring.datasource.password = password
Run Code Online (Sandbox Code Playgroud)

如果是这种情况,我如何让 Hibernate 使用正确的方言?

我试过:

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
Run Code Online (Sandbox Code Playgroud)

spring.jpa.database=postgresql
Run Code Online (Sandbox Code Playgroud)

spring.jpa.database-platform = org.hibernate.dialect.PostgreSQL94Dialect
Run Code Online (Sandbox Code Playgroud)

spring.jpa.database=org.hibernate.dialect.PostgreSQLDialect
Run Code Online (Sandbox Code Playgroud)

对错误没有影响:

Hibernate: insert into user (created_at, last_modified_at, account_id, email, hashed_password_salt, name, over_hashed_password, preferred_name, public_key, started_displaying_sites_at, watched_tutorial_at, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2017-09-08 14:41:40.177  WARN 15764 --- [           main] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: 42601 …
Run Code Online (Sandbox Code Playgroud)

java postgresql spring hibernate

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

Spring Hibernate CRUD:ORA-00923:在预期位置未找到 FROM 关键字

我的代码中收到了“ORA-00923:在预期位置未找到 FROM 关键字”错误。我正在尝试使用 Spring Hibernate 实现 CRUD 操作。我已经检查了 sql 查询中的语法错误以及引号,但似乎无法检测到任何异常情况。

用户类别:

package com.spring.model;

import javax.persistence.*;

@Entity
@Table(name="PATIENT_MODEL")
public class User {

private int id;
private String patientFirstName;
private String patientLastName;
private String patientEmail;
private String patientAddress1;
private String patientAddress2;

@Id
@GeneratedValue
@Column(name="PATIENT_ID")
public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

@Column(name="PATIENT_FIRST_NAME")
public String getPatientFirstName() {
    return patientFirstName;
}

public void setPatientFirstName(String patientFirstName) {
    this.patientFirstName = patientFirstName;
}

@Column(name="PATIENT_LAST_NAME")
public String getPatientLastName() { …
Run Code Online (Sandbox Code Playgroud)

java oracle spring hibernate spring-mvc

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