gpt4 book ai didi

java - JPA异常: org. hibernate.exception.SQLGrammarException

转载 作者:行者123 更新时间:2023-11-29 11:52:07 24 4
gpt4 key购买 nike

我正在使用 MySQL DB 开发 Spring MVC 应用程序。数据库中的两个表具有一对多关系。

其中一个表格是测验

@Entity
@Table(name="Quiz", schema = "QuizOwo")
public class QuizEntity
{
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name = "idQuiz")
private int idQuiz;

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

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

@ManyToOne(optional=false)
@JoinColumn(name = "idCategory")
private CategoryQuizEntity categoryQuizEntity;

@Column(name = "idPortal")
private int idPortal;

另一张表是

@Entity
@Table(name="CategoryQuiz", schema = "QuizOwo")
public class CategoryQuizEntity
{
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name = "idCategoryQuiz")
private int idCategoryQuiz;

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

@OneToMany(mappedBy="categoryQuizEntity", targetEntity=QuizEntity.class, fetch=FetchType.LAZY)
@LazyCollection(LazyCollectionOption.FALSE)
private List<QuizEntity> quizEntities;

我的问题是,当发布 SQL 语句(使用 hibernate JPA)时,会抛出 org.hibernate.exception.SQLGrammarException 以及此信息。

could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet

为什么?

---编辑---

我的mysql配置是

@Configuration
@EnableTransactionManagement
public class PersistenceConfig
{
/** Bean para obtener el dataSource */
@Bean(name = "dataSource")
public DataSource getDataSource(){
DataSource dataSource = createDataSource();
return dataSource;
}

/** Generador del datasource */
private DriverManagerDataSource createDataSource() {
DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();
driverManagerDataSource.setDriverClassName(ConfigurationManager.getProperty(ConfigurationManager.DATABASE_DIVERCLASSNAME));
driverManagerDataSource.setUrl(ConfigurationManager.getProperty(ConfigurationManager.DATABASE_URL));
driverManagerDataSource.setUsername(ConfigurationManager.getProperty(ConfigurationManager.DATABASE_USERNAME));
driverManagerDataSource.setPassword(ConfigurationManager.getProperty(ConfigurationManager.DATABASE_PASSWORD));
driverManagerDataSource.setConnectionProperties(databaseProperties());
return driverManagerDataSource;
}

@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
return new PersistenceExceptionTranslationPostProcessor();
}


/** Generamos un entityManagerFactory con lo paquetes donde tiene que escanear para buscar a las entidades, el datasource
* las propiedades de hibernate... */
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() throws ClassNotFoundException, PropertyVetoException {
LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean();
emf.setDataSource(createDataSource());
emf.setPackagesToScan(new String[] { "com.owo.quiz.models" });
JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
emf.setJpaVendorAdapter(vendorAdapter);
emf.setJpaProperties(hibernateProperties());
return emf;
}

/** Propiedades para hibernate/JPA */
Properties hibernateProperties() {
return new Properties() {
{
setProperty("hibernate.dialect", ConfigurationManager.getProperty(ConfigurationManager.HIBERNATE_DIALECT));
setProperty("hibernate.globally_quoted_identifiers", "true");
}
};
}

/** Propiedades para la conexión con la base de datos */
Properties databaseProperties() {
return new Properties() {
{
setProperty("characterEncoding", "iso8859-1");
}
};
}
}

===编辑====

SQL INSERT 测验表是

CREATE TABLE Quiz ( idQuiz int(11) NOT NULL AUTO_INCREMENT, nameQuiz varchar(45) COLLATE latin1_spanish_ci DEFAULT NULL, descriptionQuiz text COLLATE latin1_spanish_ci, idCategory int(11) DEFAULT NULL, idPortal int(11) DEFAULT NULL, PRIMARY KEY (idQuiz), KEY fk_Quiz_1_idx (idCategory), CONSTRAINT fk_Quiz_1 FOREIGN KEY (idCategory) REFERENCES CategoryQuiz (idCategoryQuiz) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci;

最佳答案

我重置了该用户的所有 MySQL 权限,并且它工作正常。

关于java - JPA异常: org. hibernate.exception.SQLGrammarException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33893942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com