小编Jay*_*ark的帖子

JPA/Hibernate无法创建名为Order的Entity

我正在使用Hibernate/JPA并且有一个名为Order的@Entity对象,使用Hibernate的动态表生成指向MySQL数据库,即在运行时为实体生成表.当Hibernate创建表时,它会为除Order实体之外的所有实体创建表.如果我将Order实体重命名为其他东西,例如StoreOrder,则创建store_order表没有问题.

此外,如果我这样做但是然后注释StoreOrder对象以指定它应该创建的表使用@Table(name ="order")称为"order",则不再创建表.

我意识到订单是一个保留字,但这是它无法创建表的原因吗?考虑到Hibernate docs使用一个名为Order的实体的例子,这似乎很奇怪.

它看起来不像MySQL问题,因为我可以直接在数据库上手动创建一个名为order的表.

这是相关的Order实体对象定义......

@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class Order extends PersistentEntity {
... rest of POJO def...
}
Run Code Online (Sandbox Code Playgroud)

...和相应的Persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">

    <persistence-unit name="store" transaction-type="RESOURCE_LOCAL">

        <provider>org.hibernate.ejb.HibernatePersistence</provider>

        <mapping-file>conf/jpa/persistence-query.xml</mapping-file>

        <!-- Entities -->
        ...other entities...
        <class>ie.wtp.store.model.Order</class>
        <class>ie.wtp.store.model.OrderItem</class>

        <!-- Hibernate properties -->
        <properties>
            <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/store"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.connection.username" value="root"/>
            <property name="hibernate.connection.password" value=""/>

            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>

            <property name="hibernate.query.factory_class"
                      value="org.hibernate.hql.classic.ClassicQueryTranslatorFactory"/>
            <property name="hibernate.query.substitutions" value="true 1, false 0"/>
            <property name="cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
            <property name="hibernate.max_fetch_depth" value="3"/>
            <property name="hibernate.archive.autodetection" value="class"/> …
Run Code Online (Sandbox Code Playgroud)

java mysql orm hibernate jpa

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

将Glassfish v2升级到JPA 2.0?

我试图使用Hibernate 3.5.5和Spring HibernateJpaVendorAdapter在Glassfish V2,但我发现当Spring上下文被初始化以下异常:

java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getSharedCacheMode()Ljavax/persistence/SharedCacheMode;
Run Code Online (Sandbox Code Playgroud)

在org.hibernate.ejb.util.LogHelper.logPersistenceUnitInfo(LogHelper.java:39)在org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:517)在org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java :73)

问题是Glassfish V2使用JPA1.0,它在hibernate附带的hibernate-jpa-2.0-api-1.0.0.Final.jar之前加载到服务器类路径上.JPA 1.0在PersistenceUnitInfo中没有getSharedCacheModel方法,但JPA 2.0没有.

是否有任何方法可以升级Glassfish V2以使用JPA 2.0(或任何其他解决此问题的方法)?

干杯,

Ĵ

orm jpa glassfish hibernate3 jpa-2.0

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

Grails将我的repo中的zip解释为插件,尽管它实际上并不是一个插件

我的grails项目(我构建的模块)的依赖项使用maven-assembly-plugin输出一个zip文件作为其构建过程的一部分(供flex应用程序使用).这个zip输出到我的本地mvn repo,与从构建模块输出的jar相同的目录输出

.m2/repository/com/mypackage/domain/1.0.0-SNAPSHOT/domain-1.0.0-SNAPSHOT.jar
.m2/repository/com/mypackage/domain/1.0.0-SNAPSHOT/domain-1.0.0-SNAPSHOT-generated-tos.zip
Run Code Online (Sandbox Code Playgroud)

由于模块是我的grails项目中的(传递)依赖项,jar和zip都被缓存在常春藤缓存中

现在,当我尝试启动我的grails应用程序时,Grails似乎从常春藤缓存中检测到这个zip并尝试将其安装为插件,但由于显而易见的原因而失败...

| Loading Grails 2.0.0
| Configuring classpath.
| Environment set to development.....
| Error Zip ~/.grails/ivy-cache/com.mypackage/domain/zips/domain-1.0.0-SNAPSHOT-generated-tos.zip is not a valid plugin
Run Code Online (Sandbox Code Playgroud)

由于另一个模块使用mvn-dependency-plugin将其作为构建过程的一部分解压缩,因此必须将zip构建到repo.因此,我需要找到一种方法来告诉Grails忽略它,因为它不是一个插件zip.这可能吗?

grails plugins dependencies

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

你如何将args传递给gmaven groovy:执行?

我需要将一些args传递给通过gmaven执行的groovy脚本.如果我直接在命令行上执行脚本,我就可以做到这一点:

printArgs.groovy ...

for (a in this.args) {
  println("Argument: " + a)
}
Run Code Online (Sandbox Code Playgroud)

命令...

$groovy printArgs.groovy fe fi fo fum 
Run Code Online (Sandbox Code Playgroud)

输出...

Argument: fee
Argument: fi
Argument: fo
Argument: fum
Run Code Online (Sandbox Code Playgroud)

虽然使用mvn groovy:execute,我无法看到如何通过插件传递这些args.理想情况下,我想在插件配置中设置一些默认参数,但是当我执行命令时能够覆盖它们.如果可能的话,能够将它们作为named-args传递也会很好.

<plugin>
    <groupId>org.codehaus.gmaven</groupId>
    <artifactId>gmaven-plugin</artifactId>
    <version>1.3</version>
    <configuration>
        <source>${pom.basedir}/src/main/resources/printArgs.groovy</source>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

插件文档有点稀缺(也过时).我看到有一个'属性'可选参数,但我不认为这是用于此目的(或者如果它是,我不能让它工作!).

干杯:)

parameters groovy args maven gmaven-plugin

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

泛型 - 在为泛型类提供具体类型时类型不匹配

简单的Java泛型问题:我有两个类 - 其中一个使用泛型来定义它的类型,另一个扩展这个类提供一个具体类型.

public class Box<Item> {
    ...
}


public class Toolbox extends Box<Tool>{
    ...
}
Run Code Online (Sandbox Code Playgroud)

鉴于Toolbox扩展Box提供了一个工具作为通用占位符的实际类型,我本以为应该可以这样做:

Box<Tool> box = new Box();

Toolbox toolbox = box; 
Run Code Online (Sandbox Code Playgroud)

但是,这似乎导致类型不匹配.为什么是这样?

java generics inheritance type-mismatch

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