Derby의 JPA가 BLOB 크기를 64KB로 기본 설정하는 문제가 발생했습니다. columnDefinition = "BLOB (128M)"을 설정하여이 문제를 해결할 수 있습니다. 그러나 이것은 MS SQL과 같은 다른 RDBMS에 대한 통합 테스트 중에 실패합니다. 내가하고 싶은 것은 orm.xml을 사용하여 columnDefinition을 설정하는 것이다. 그러나, 나의 시도는 쓸모없고 이것이 작동하게 할 수 없다. 내가 예상 한대로 orm.xml에 설정된 값이 주석을 덮어 쓰는 것으로 나타나지 않습니다.orm.xml이 주석을 대체하지 않습니다.
JPA 1.0, Toplink Essentials 2.1.60을 사용하고 있습니다.
I는 다음의 엔티티와 같은 주석 가지고
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 (META-INF에 위치)
<?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>
orm.xml
<?xml version="1.0" encoding="UTF-8" ?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm
http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" version="1.0">
<persistence-unit-metadata>
<persistence-unit-defaults>
<schema>TEST</schema>
</persistence-unit-defaults>
</persistence-unit-metadata>
<entity class="foo.Attachment" access="FIELD" >
<attributes>
<basic name="file">
<!--
I'm using maven profiles to set the 'jpa.blob.definition' property. I even tried changing the column name.
-->
<column nullable="true" name="ATTACHED_FILE_MODIFIED" column-definition="${jpa.blob.definition}" />
</basic>
</attributes>
</entity>
</entity-mappings>
이 흥미 롭다 orm.xml에서 엔터티 클래스 또는 기본 이름 특성을 변경하면 해당 개체가 잘못되었거나 찾을 수 없다는 오류가 발생합니다. 그래서 그것은 그것을 읽고 있지만 그것은 에 지정된 주석보다 우선하지 않습니다. 기본 스키마도 사용되지 않습니다.
orm.xml이 주석을 대체한다고 가정하지 않습니까? 단순하지 않아야합니까?
우리가 적극적으로 사람들에게 그렇게하도록 권장하기 때문에 DataNucleus JPA를 사용하여 그러한 정보를 무시할 수 있습니다. 아마도 TopLink의 버그입니까? – DataNucleus