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