针对AnassociationfromthetablePersonAddressreferstoanunmappedclass这个问题,本篇文章进行了详细的解答,同时本文还将给你拓展ABAPonHAN
针对An association from the table PersonAddress refers to an unmapped class这个问题,本篇文章进行了详细的解答,同时本文还将给你拓展ABAP on HANA之CDS Association和Path Expression、An association from the table content refers to an、Android Google maps java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion、Android java.lang.NoClassDefFoundError:failed resolution of :Lorg/apache/http/ProtocolVersion等相关知识,希望可以帮助到你。
本文目录一览:- An association from the table PersonAddress refers to an unmapped class
- ABAP on HANA之CDS Association和Path Expression
- An association from the table content refers to an
- Android Google maps java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion
- Android java.lang.NoClassDefFoundError:failed resolution of :Lorg/apache/http/ProtocolVersion
An association from the table PersonAddress refers to an unmapped class
cjq\hibernate\tutorial\domain01\Person.hbm.xml 文件内容为:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cjq.hibernate.tutorial.domain01">
<class name="Person">
<id name="id" column="personId">
<generator/>
</id>
<join table="PersonAddress" optional="true">
<key column="personId" />
<many-to-one name="address" column="addressId" not-null="true"/>
</join>
</class>
<class name="Address">
<id name="id" column="addressId">
<generator/>
</id>
</class>
</hibernate-mapping>
Person.java
package cjq.hibernate.tutorial.domain01;
import java.util.HashSet;
import java.util.Set;
public class Person {
int id;
int address ;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAddress() {
return address;
}
public void setAddress(int address) {
this.address = address;
}
}
Address.java
package cjq.hibernate.tutorial.domain01;
public class Address {
int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
MyTest.java
package cjq.hibernate.tutorial.domain01;
import java.util.HashSet;
import java.util.Set;
import org.hibernate.Session;
import cjq.hibernate.tutorial.util.HibernateUtil;
public class MyTest {
public static void main(String [] args){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Address a = new Address();
session.save(a);
Address b = new Address();
session.save(b);
Person p1 = new Person();
p1.setAddress(a.getId());
session.save(p1);
Person p2 = new Person();
p2.setAddress(a.getId());
session.save(p2);
session.getTransaction().commit();
HibernateUtil.getSessionFactory().close();
}
}
运行 MyTest.java
此时报错:
Initial SessionFactory creation failed.org.hibernate.MappingException: An association from the table PersonAddress refers to an unmapped class: int
Exception in thread "main" java.lang.ExceptionInInitializerError
at cjq.hibernate.tutorial.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:27)
at cjq.hibernate.tutorial.util.HibernateUtil.<clinit>(HibernateUtil.java:15)
at cjq.hibernate.tutorial.domain01.MyTest.main(MyTest.java:12)
Caused by: org.hibernate.MappingException: An association from the table PersonAddress refers to an unmapped class: int
at org.hibernate.cfg.Configuration.secondPassCompileForeignKeys(Configuration.java:1697)
at org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1631)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1366)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1731)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1782)
at cjq.hibernate.tutorial.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:23)
... 2 more
分析后,Person.java 中,address 的类型不应该为 int, 而应该为 Address 类型
修改后的 Person.java 为:
package cjq.hibernate.tutorial.domain01;
import java.util.HashSet;
import java.util.Set;
public class Person {
int id;
Address address ;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
同时,MyTest.java 的内容做相应修改:
package cjq.hibernate.tutorial.domain01;
import java.util.HashSet;
import java.util.Set;
import org.hibernate.Session;
import cjq.hibernate.tutorial.util.HibernateUtil;
public class MyTest {
public static void main(String [] args){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Address a = new Address();
session.save(a);
Address b = new Address();
session.save(b);
Person p1 = new Person();
p1.setAddress(a);
session.save(p1);
Person p2 = new Person();
p2.setAddress(a);
session.save(p2);
session.getTransaction().commit();
HibernateUtil.getSessionFactory().close();
}
}
此时,再运行 MyTest.java
输出的错误信息为:
ERROR: HHH000388: Unsuccessful: create table PersonAddress (personId number(10,0) not null unique, addressId number(10,0) not null, primary key (personId))
八月 25, 2012 11:10:25 下午 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: ORA-02261: 表中已存在这样的唯一关键字或主键
八月 25, 2012 11:10:25 下午 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: HHH000388: Unsuccessful: alter table PersonAddress add constraint FKA81B4EBF9A4AE9FE foreign key (personId) references Person
八月 25, 2012 11:10:25 下午 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: ORA-00942: 表或视图不存在
八月 25, 2012 11:10:25 下午 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: HHH000388: Unsuccessful: alter table PersonAddress add constraint FKA81B4EBF945FDFAA foreign key (addressId) references Address
八月 25, 2012 11:10:25 下午 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
ERROR: ORA-00942: 表或视图不存在
八月 25, 2012 11:10:25 下午 org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000232: Schema update complete
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: insert into Address (addressId) values (?)
Hibernate: insert into Address (addressId) values (?)
Hibernate: insert into Person (personId) values (?)
Hibernate: insert into PersonAddress (addressId, personId) values (?, ?)
八月 25, 2012 11:10:26 下午 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 942, SQLState: 42000
八月 25, 2012 11:10:26 下午 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: ORA-00942: 表或视图不存在
Exception in thread "main" org.hibernate.exception.SQLGrammarException: ORA-00942: 表或视图不存在
at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:122)
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129)
at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
at $Proxy6.executeUpdate(Unknown Source)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2862)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3300)
at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:88)
at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:354)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:275)
at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:326)
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:52)
at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1214)
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:403)
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
at cjq.hibernate.tutorial.domain01.MyTest.main(MyTest.java:36)
Caused by: java.sql.SQLException: ORA-00942: 表或视图不存在
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:966)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1170)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3339)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3423)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)
... 15 more
注意到:create table PersonAddress (personId number (10,0) not null unique, addressId number (10,0) not null, primary key (personId)) 这个建表语句,primary key 与 not null unique 是重复的。
查看 Person.hbm.xml,发现:
<join table="PersonAddress" optional="true">
<key column="personId" unique="true"/>
<many-to-one name="address" column="addressId" not-null="true"/>
</join>
此处的 unique="true" 应该去掉:
<join table="PersonAddress" optional="true">
<key column="personId" />
<many-to-one name="address" column="addressId" not-null="true"/>
</join>
这样再次运行 MyTest.java
就正确了。
ABAP on HANA之CDS Association和Path Expression
本文阐述了ABAP CDS association的概念,并且展示了在CDS视图中和SQL语句中写路径表达式(Path Expression)代码的方法。我也会解释如何在CDS asociation中指定inner join——默认情况下是left outer join,以及如何为association添加过滤。
对于CDS的相关开发,SAP希望我们使用association而不是join,因为association更加接近“概念思维”。基本上,association本身不是join,它只是有关join连接可能性的元数据,它会按需成为join。真实的join会在路径表达式使用association的时候被创建。
一个简单的CDS association例子,它看起来和left outer join没区别:
@AbapCatalog.sqlViewName: ''ZCDS_ASSOC11''
define view zcds_assoc1 as select from scarr as sca
association [0..1] to spfli as _spfli
on sca.carrid = _spfli.carrid
{ * }
暴露CDS association的例子:
@AbapCatalog.sqlViewName: ''ZCDS_ASSOC41''
@AccessControl.authorizationCheck: #NOT_REQUIRED
define view zcds_assoc4 as select from sairport as sair
association [1..*] to spfli as _spfli on
$projection.airportfrom = _spfli.airpfrom
{
sair.id as airportfrom,
sair.name,
sair.time_zone,
-- exposing association
_spfli
}
在下面的例子里,你可以看到SPFLI表对SFLIGHT表和SAIRPORT表的association。通过别名alias _sfli和SFLIGHT和_sair,SAIRPORT的全部字段暴露在projection列表中。当路径表达式用于调用association时,会根据选择字段创建join条件:spfli.carrid = sflight.carrid and spfli.connid = sflight.connid and on spfli.airport = sairport.id。
@AbapCatalog.sqlViewName: ''ZCDS_ASSOC21''
@AccessControl.authorizationCheck: #NOT_REQUIRED
define view zcds_assoc2 as select from spfli
association to sflight as _sfli on
spfli.carrid = _sfli.carrid and
spfli.connid = _sfli.connid
association [1..1] to sairport as _sair on
$projection.airportfrom = _sair.id
{
spfli.carrid,
spfli.connid,
spfli.airpfrom as airportfrom,
-- exposing association
_sfli,
_sair
}
在下面的例子里,定义association时使用了上面的CDS entity,ZCDS_ASSOC2 :
@AbapCatalog.sqlViewName: ''ZCDS_ASSOC31''
@AccessControl.authorizationCheck: #NOT_REQUIRED
define view zcds_assoc3 as select from scarr
association [1..1] to zcds_assoc2 as _cdsassoc on
$projection.carrierid = _cdsassoc.carrid
{
scarr.carrid as carrierid,
-- Exposing Association
_cdsassoc
}
Open SQL语句中的路径表达式:在SQL语句中调用CDS association,需要使用如下的路径表达式。在上面的CDS association中,通过_cdsassoc暴露了完整的projection列表。
DATA(w_dbfeature) = cl_abap_dbfeatures=>use_features(
requested_features = VALUE #( ( cl_abap_dbfeatures=>views_with_parameters ) ) ).
IF w_dbfeature IS NOT INITIAL.
SELECT carrierid ,
\_cdsassoc\_sfli-fldate AS flightdate,
\_cdsassoc\_sair-name AS flightname
FROM zcds_assoc3
WHERE carrierid = @carrid
INTO TABLE @DATA(t_data1).
ENDIF.
CDS视图中的路径表达式:
@AbapCatalog.sqlViewName: ''ZCDS_ON_ASSOC1''
define view zcds_on_assoc with parameters airport: S_FROMAIRP as select from zcds_assoc2 as cds2
{
cds2.carrid,
cds2.connid,
cds2.airportfrom,
cds2._sair.name, -- use inner join...by default association uses left outer join
cds2._sfli.planetype
}
where cds2.airportfrom = :airport
如我所提到的那样,在被路径表达式调用时,CDS association会默认创建left outer join。
在SPFLI表数据中,没有RTM机场的航班。
当我们输入参数airport = RTM的时候 ,下面的CDS视图的查询结果会是一条RTM机场的数据,但是这条记录里没有carrid。
@AbapCatalog.sqlViewName: ''ZCDS_ON_ASSOC41''
define view zcds_on_assoc4 with parameters airport: S_FROMAIRP as select from zcds_assoc4 as cds_assoc
{
cds_assoc.airportfrom,
cds_assoc.name,
cds_assoc.time_zone,
cds_assoc._spfli.carrid -- use inner join...by default association uses left outer join
}
where cds_assoc.airportfrom = :airport
运行上面的CDS视图:
data preview中的结果:
为了把默认的left outer join变成inner join,我们需要使用[inner],如下:
@AbapCatalog.sqlViewName: ''ZCDS_ON_ASSOC41''
define view zcds_on_assoc4 with parameters airport: S_FROMAIRP as select from zcds_assoc4 as cds_assoc
{
cds_assoc.airportfrom,
cds_assoc.name,
cds_assoc.time_zone,
cds_assoc._spfli[inner].carrid -- use inner join...by default association uses left outer join
}
where cds_assoc.airportfrom = :airport
如果运行它,输入参数RTM,得到的结果为空:
目前,还不可以在CDS association中使用right outer join。
CDS association中的过滤例子如下:
@AbapCatalog.sqlViewName: ''ZCDS_ASSOC_FILT''
define view ZCDS_ASSOC_FILTER as select from zcds_assoc2 as cds2
{
cds2._sair[ id = ''TYO'' ].name,
cds2._sfli.planetype
}
CDS视图的输出结果:
希望本文对你有帮助!
本文链接:https://www.cnblogs.com/hhelibeb/p/9202781.html
英文原文:CDS Associations and 路径表达式s – ABAP on HANA
参考阅读:ABAP 7.52 中的Open SQL新特性
Material Quantity Unit Conversion using CDS Views
HANA CDS与ABAP CDS
An association from the table content refers to an
今天 hibernate 报了一个错:An association from the table content refers to an unmapped class:com.blog.content.kind
经查,发现是 content.hbm.xml 里面的 Kind 类全名错了。由于之前改动过数据库表,在 content 表里引入了外键 kind_fk,然后用 myeclipse 自动生成 Content 类和相应的 hbm.xml 文件时,就会出现这样的错误!
Android Google maps java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion
我正在使用 Google 地图 Android SDK 11.6.2(也尝试过 15.0.1),但在地图显示之前我遇到了以下崩溃。已在清单中检查 API
密钥,它可用,但仍然出现此问题。我的 targetSDk 版本为 28。是否会导致此问题。
java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion;
at el.b(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):3)
at ek.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):4)
at em.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):51)
at com.google.maps.api.android.lib6.drd.ap.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):11)
at dw.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):16)
at dw.run(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):61)
Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.http.ProtocolVersion" on path: DexPathList[[zip file "/system/priv-app/PrebuiltGmsCorePi/app_chimera/m/MapsDynamite.apk"],nativeLibraryDirectories=[/data/user_de/0/com.google.android.gms/app_chimera/m/00000036/MapsDynamite.apk!/lib/armeabi-v7a,/data/user_de/0/com.google.android.gms/app_chimera/m/00000036/MapsDynamite.apk!/lib/armeabi,/system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:126)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at ad.loadClass(:com.google.android.gms.dynamite_dynamiteloader@12848063@12.8.48 (100408-196123505):25)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at el.b(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):3)聽
at ek.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):4)聽
at em.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):51)聽
at com.google.maps.api.android.lib6.drd.ap.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):11)聽
at dw.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):16)聽
at dw.run(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):61)聽
Android java.lang.NoClassDefFoundError:failed resolution of :Lorg/apache/http/ProtocolVersion
问题是突然出现的,因为我走测试的时候没有问题,但是正式的时候就这样了,报错APP发生的样式是直接闪退。问题报错位置大概是Applicition类,因为这里基本是都是初始化第三方地方,
问题形成原因:可能是api过高了,我这里之前是27。因为需要集成一个发布WiFi给硬件使用的第三方sdk改成了28.
重点:API 版本过高造成的。
解决方法:
在Manifest下的application标签 下加入:
<uses-library android:name="org.apache.http.legacy" android:required="false" />
大概样式:
<application 吧啦吧啦吧啦。。。。。>
<uses-library android:name="org.apache.http.legacy" android:required="false" />
</application>
如果还不OK:
你会发现app连不上网:
解决方法: 一般出现在android版本9.0以上,好像是android对网络请求出现了限制<httpclient>就这个
首先在res下弄一个叫xml的包创建一个文件,例如:aaa
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
之后在manifest里面
<application
android:networkSecurityConfig="@xml/aaa"
吧啦吧啦吧啦。。。。。>
<uses-library android:name="org.apache.http.legacy" android:required="false" />
</application>
最后在项目build的android目录里面加上
android { useLibrary 'org.apache.http.legacy' }
如果如果如果还不好:十有八九用了服务,还可能是前台服务:
解决方法: 这个一般是因为app里面有服务的原因。android 9.0上使用前台服务,需要添加权限
在manifest里面加上这权限
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
基本是大功告成。
假如还有问题:
现在是考验我们的心里素质了,
首先把电脑调至到桌面,鼠标右击创建一个word文档,其次在里面写入离职证明。最后交由经理。不干了
太欺负人。(开个玩笑嘿嘿)
----致敬不断在bug之路披荆斩浪的我们!!!
2020最崩溃的一年加油。
关于An association from the table PersonAddress refers to an unmapped class的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ABAP on HANA之CDS Association和Path Expression、An association from the table content refers to an、Android Google maps java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion、Android java.lang.NoClassDefFoundError:failed resolution of :Lorg/apache/http/ProtocolVersion等相关知识的信息别忘了在本站进行查找喔。
本文标签: