mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
FIX for ManyToOne targetType & OSGI MANIFEST
This commit is contained in:
@@ -217,7 +217,15 @@
|
||||
</includes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
|
||||
</archive>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<!--
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
|
||||
@@ -286,6 +286,12 @@ public final class DefaultServer implements SpiEbeanServer {
|
||||
ddlGenerator = (DdlGenerator)plugin;
|
||||
}
|
||||
}
|
||||
|
||||
if (ddlGenerator == null){
|
||||
ddlGenerator = new DdlGenerator();
|
||||
spiPlugins.add(ddlGenerator);
|
||||
ddlGenerator.setup(this, this.getDatabasePlatform(), config.getServerConfig());
|
||||
}
|
||||
|
||||
ebeanPlugins = Collections.unmodifiableList(spiPlugins);
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import java.lang.reflect.Modifier;
|
||||
import java.lang.reflect.ParameterizedType;
|
||||
import java.lang.reflect.Type;
|
||||
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.PersistenceException;
|
||||
import javax.persistence.Transient;
|
||||
|
||||
@@ -273,6 +274,17 @@ public class DeployCreateProperties {
|
||||
private DeployBeanProperty createProp(DeployBeanDescriptor<?> desc, Field field) {
|
||||
|
||||
Class<?> propertyType = field.getType();
|
||||
|
||||
ManyToOne manyToOne = field.getAnnotation(ManyToOne.class);
|
||||
|
||||
if (manyToOne != null){
|
||||
Class<?> tt = manyToOne.targetEntity();
|
||||
|
||||
if (tt != null && !tt.equals(void.class)){
|
||||
propertyType = tt;
|
||||
logger.debug("target type" + tt);
|
||||
}
|
||||
}
|
||||
Class<?> innerType = propertyType;
|
||||
|
||||
String specialTypeKey = getSpecialScalarType(field);
|
||||
|
||||
@@ -1,3 +1,67 @@
|
||||
Manifest-Version: 1.0
|
||||
Premain-Class: com.avaje.ebean.enhance.agent.Transformer
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: Ebean-ORM
|
||||
Bundle-SymbolicName: com.avaje.ebean
|
||||
Bundle-Version: 4.1.9
|
||||
Bundle-ClassPath: .
|
||||
Bundle-Vendor: avaje
|
||||
Export-Package: com.avaje.ebean,
|
||||
com.avaje.ebean.annotation,
|
||||
com.avaje.ebean.bean,
|
||||
com.avaje.ebean.cache,
|
||||
com.avaje.ebean.common,
|
||||
com.avaje.ebean.config,
|
||||
com.avaje.ebean.config.dbplatform,
|
||||
com.avaje.ebean.event,
|
||||
com.avaje.ebean.meta,
|
||||
com.avaje.ebean.text,
|
||||
com.avaje.ebean.text.csv,
|
||||
com.avaje.ebean.text.json,
|
||||
com.avaje.ebean.util,
|
||||
com.avaje.ebeaninternal.api,
|
||||
com.avaje.ebeaninternal.jdbc,
|
||||
com.avaje.ebeaninternal.server.autofetch,
|
||||
com.avaje.ebeaninternal.server.cache,
|
||||
com.avaje.ebeaninternal.server.cluster,
|
||||
com.avaje.ebeaninternal.server.cluster.mcast,
|
||||
com.avaje.ebeaninternal.server.cluster.socket,
|
||||
com.avaje.ebeaninternal.server.core,
|
||||
com.avaje.ebeaninternal.server.ddl,
|
||||
com.avaje.ebeaninternal.server.deploy,
|
||||
com.avaje.ebeaninternal.server.deploy.generatedproperty,
|
||||
com.avaje.ebeaninternal.server.deploy.id,
|
||||
com.avaje.ebeaninternal.server.deploy.meta,
|
||||
com.avaje.ebeaninternal.server.deploy.parse,
|
||||
com.avaje.ebeaninternal.server.el,
|
||||
com.avaje.ebeaninternal.server.expression,
|
||||
com.avaje.ebeaninternal.server.idgen,
|
||||
com.avaje.ebeaninternal.server.jdbc,
|
||||
com.avaje.ebeaninternal.server.jmx,
|
||||
com.avaje.ebeaninternal.server.lib,
|
||||
com.avaje.ebeaninternal.server.lib.resource,
|
||||
com.avaje.ebeaninternal.server.lib.sql,
|
||||
com.avaje.ebeaninternal.server.lib.thread,
|
||||
com.avaje.ebeaninternal.server.lib.util,
|
||||
com.avaje.ebeaninternal.server.loadcontext,
|
||||
com.avaje.ebeaninternal.server.persist,
|
||||
com.avaje.ebeaninternal.server.persist.dml,
|
||||
com.avaje.ebeaninternal.server.persist.dmlbind,
|
||||
com.avaje.ebeaninternal.server.query,
|
||||
com.avaje.ebeaninternal.server.querydefn,
|
||||
com.avaje.ebeaninternal.server.reflect,
|
||||
com.avaje.ebeaninternal.server.resource,
|
||||
com.avaje.ebeaninternal.server.text.csv,
|
||||
com.avaje.ebeaninternal.server.text.json,
|
||||
com.avaje.ebeaninternal.server.transaction,
|
||||
com.avaje.ebeaninternal.server.type,
|
||||
com.avaje.ebeaninternal.server.type.reflect,
|
||||
com.avaje.ebeaninternal.server.util,
|
||||
com.avaje.ebeaninternal.util
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||
Require-Bundle:
|
||||
org.slf4j.api;bundle-version="1.7.2",
|
||||
com.springsource.org.joda.time;bundle-version="1.6.0"
|
||||
Import-Package: javax.persistence;version="2.0.0"
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.avaje.tests.basic;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.avaje.ebean.BaseTestCase;
|
||||
import com.avaje.ebean.Ebean;
|
||||
import com.avaje.tests.model.basic.ResetBasicData;
|
||||
import com.avaje.tests.model.interfaces.Address;
|
||||
import com.avaje.tests.model.interfaces.IAddress;
|
||||
import com.avaje.tests.model.interfaces.IPerson;
|
||||
import com.avaje.tests.model.interfaces.Person;
|
||||
|
||||
public class TestManyOneInterface extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
IAddress a = new Address();
|
||||
|
||||
IPerson p = new Person();
|
||||
|
||||
p.setDefaultAddress(a);
|
||||
|
||||
Ebean.save(a);
|
||||
Ebean.save(p);
|
||||
|
||||
//Assert.assertTrue();
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.avaje.tests.model.interfaces;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Version;
|
||||
|
||||
@Entity
|
||||
public class Address implements IAddress {
|
||||
|
||||
@Id
|
||||
private long oid;
|
||||
|
||||
@Version
|
||||
private int version;
|
||||
|
||||
private String street;
|
||||
|
||||
public long getOid() {
|
||||
return oid;
|
||||
}
|
||||
|
||||
public void setOid(long oid) {
|
||||
this.oid = oid;
|
||||
}
|
||||
|
||||
public int getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public void setVersion(int version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getStreet() {
|
||||
return street;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStreet(String s) {
|
||||
this.street = s;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package com.avaje.tests.model.interfaces;
|
||||
|
||||
public interface IAddress {
|
||||
public String getStreet();
|
||||
public void setStreet(String s);
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package com.avaje.tests.model.interfaces;
|
||||
|
||||
public interface IPerson {
|
||||
public IAddress getDefaultAddress();
|
||||
public void setDefaultAddress(IAddress address);
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package com.avaje.tests.model.interfaces;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.Version;
|
||||
|
||||
@Entity
|
||||
public class Person implements IPerson {
|
||||
@Id
|
||||
private long oid;
|
||||
|
||||
@Version
|
||||
private int version;
|
||||
|
||||
@ManyToOne(targetEntity=Address.class)
|
||||
private IAddress defaultAddress;
|
||||
|
||||
@Override
|
||||
public IAddress getDefaultAddress() {
|
||||
return defaultAddress;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDefaultAddress(IAddress address) {
|
||||
this.defaultAddress = address;
|
||||
}
|
||||
|
||||
public long getOid() {
|
||||
return oid;
|
||||
}
|
||||
|
||||
public void setOid(long oid) {
|
||||
this.oid = oid;
|
||||
}
|
||||
|
||||
public int getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public void setVersion(int version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user