Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa orm.xml不会覆盖注释_Jpa_Orm - Fatal编程技术网

Jpa orm.xml不会覆盖注释

Jpa orm.xml不会覆盖注释,jpa,orm,Jpa,Orm,我遇到了一个问题,Derby上的JPA将BLOB大小默认为64KB。我可以通过设置columnDefinition=“BLOB(128M)”来解决这个问题。但是,在针对另一个RDBMS(如MS SQL)进行集成测试时,这会失败。我要做的是使用orm.xml设置columnDefinition。然而,我的尝试一直是徒劳的,我无法让这个工作。在orm.xml中设置的值似乎并没有像我预期的那样覆盖注释 我使用的是JPA1.0,Toplink Essentials 2.1.60 我对以下实体进行了注释:

我遇到了一个问题,Derby上的JPA将BLOB大小默认为64KB。我可以通过设置columnDefinition=“BLOB(128M)”来解决这个问题。但是,在针对另一个RDBMS(如MS SQL)进行集成测试时,这会失败。我要做的是使用orm.xml设置columnDefinition。然而,我的尝试一直是徒劳的,我无法让这个工作。在orm.xml中设置的值似乎并没有像我预期的那样覆盖注释

我使用的是JPA1.0,Toplink Essentials 2.1.60

我对以下实体进行了注释:

package foo;

@Entity
@Table(name = "Attachment")
public class Attachment implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    @Version
    @Column(name = "VERSION")
    private Integer version;
    @Column(name = "FILE_NAME", nullable = false)
    private String name;
    @Lob
    @Basic
    @Column(name = "ATTACHED_FILE", nullable = false)
    private byte[] file;
}
persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"         
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
    <persistence-unit name="LAS-OOC" transaction-type="RESOURCE_LOCAL">
        <provider>${jpa.provider}</provider>
        <!-- this isn't required, i know, but I'm trying everything I can think of -->
        <mapping-file>META-INF/orm.xml</mapping-file>
        <class>foo.Attachment</class>
        <properties>
        ...
        </properties>
    </persistence-unit>
</persistence>

${jpa.provider}
META-INF/orm.xml
附
...
orm.xml(位于META-INF中)


试验
有趣的是,如果我更改orm.xml中的entity类或basic name属性,它会抱怨它无效/找不到。这说明它正在读取它,但它没有覆盖为文件指定的注释。甚至默认模式也没有被使用


难道orm.xml不应该覆盖注释吗?这不是很简单吗?

解决了我的问题。我没有意识到该项目在test/resources中的persistence.xml中定义了相同的持久性单元名称。所以当我加上

<mapping-file>META-INF/orm.xml</mapping-file>
META-INF/orm.xml

对于那个persistence.xml文件,它起了作用。所以,是的,toplink确实出现了一个bug,因为它应该会自动拾取这个bug,但不会。我不敢相信我之前没看到。唉…

很确定您可以使用DataNucleus JPA覆盖此类信息,因为我们积极鼓励人们这样做。也许这是TopLink中的一个bug?
<mapping-file>META-INF/orm.xml</mapping-file>