使用Ormlite for Android,我需要构建一个按订单ID或客户名称返回订单的查询.请考虑以下类声明:
@DatabaseTable(tableName = "order")
public class Order {
    @DatabaseField(generatedId = true)
    private Long id;

    @DatabaseField(foreign = true,canBeNull = false,foreignAutoRefresh = true,columnName = "customer_id")
    private Customer customer;

    // default constructor,getters and setters...
}

@DatabaseTable(tableName = "customer")
public class Customer {
    @DatabaseField(generatedId = true)
    private Long id;

    @DatabaseField
    private String name;

    // default constructor,getters and setters...
}

我正在寻找的原始sql将是这样的:

SELECT 
    o.* 
FROM
    order o
    JOIN customer c on
        o.customer_id = c.id
WHERE
    (o.id = ?) OR (c.name = ?)

使用Ormlite执行此操作的最佳方法是什么?

解决方法

ORMLite现在支持 simple join queries.

所以你的查询看起来像这样:

QueryBuilder<Customer,Integer> customerQb = customerDao.queryBuilder();
SelectArg nameSelectArg = new SelectArg();
// this gives the c.name = ?
customerQb.where().eq("name",nameSelectArg);
QueryBuilder<Account,Integer> orderQb = orderDao.queryBuilder();
SelectArg idSelectArg = new SelectArg();
// this gives the o.id = ?
orderQb.where().eq("id",idSelectArg);
orderQb.join(customerQb);
// then you set the args and run the query
nameSelectArg.setValue("jim");
idSelectArg.setValue(1);
List<Order> results = orderQb.join(customerQb).query();

android – ORMLite – 查询外部字段的更多相关文章

  1. 带引号的ORMLite查询,Android

    我正在使用Ormlite,使用TableRecentSearch:它几乎一直在工作,但当我发现包含’的字符串的情况时,它似乎是一个问题.你知道怎么解决这个问题吗?我找不到我要找的东西.这是我删除最近的功能这是我得到的例外情况:解决方法在ORMLite中,当您尝试使用引号构建查询时,应该使用SelectArg功能,该功能将使用sql生成查询?

  2. android – ORMLite – 查询外部字段

    使用OrmliteforAndroid,我需要构建一个按订单ID或客户名称返回订单的查询.请考虑以下类声明:我正在寻找的原始sql将是这样的:使用Ormlite执行此操作的最佳方法是什么?解决方法ORMLite现在支持simplejoinqueries.所以你的查询看起来像这样:

  3. Android – 使用ORMLite DAO作为ContentProvider

    我旁边的同事真的非常想使用Ormlite,因为他不想自己编写任何映射.我知道atleap和Android-OrmliteContentProvider项目的存在.这些只为活动提供了一个光标,我的同事希望拥有模型列表或单个模型.这可以实现吗?和Contentprovider必须使用模型.但是,使用列表等仍然可以实现相同的功能吗?将事件传递给contentobservers等活动?

  4. java – Jackson无法反序列化为ForeignCollection(Ormlite)

    解决方法ForeignCollection是一个接口,因此无法进行序列化.您应该使用实现它的类,或者仅使用@JsonIgnore该字段并添加常规List以用于序列化/反序列化目的.

  5. c# – 如何使用Simple Injector注册命名实例

    我正在开发一个WinForm应用程序,我正在使用RepositoryPattern,我使用ServicestackOrmlite进行数据访问,使用SimpleInjector进行IoC.在我的program.cs中我有2个注册2个不同的OrmliteConnectionFactory但是目前我无法因为我无法注册命名…用FunQ我可以用这是我的program.csBootstrap方法提前致谢解决方

  6. java – ORMLite – 如何创建对象并填充外部集合?

    我正在尝试创建一个对象,并在一个操作中填充该对象持有的外部集合的成员.我已经尝试了我能想到的每一个操作顺序,而且似乎无法让它工作.我的课程是:我这样创建我的对象:我已经尝试了最后三个语句的所有排序,但似乎没有任何作用:在每种情况下,最终在scheduledjobtask数据库表中的条目的’job_id’字段都为null.我做错了什么想法?

  7. java – 如何使用OrmLite连接到密码保护的SQLite数据库?

    我从资产中复制DB代码:得到Dao我用这个:但是如何获取Dao如果我的DB将被密码保护?解决方法您必须使用OrLCite的sqlCipher,我会向您推荐ormlite-sqlcipher库

随机推荐

  1. bluetooth-lowenergy – Altbeacon库无法在Android 5.0上运行

    昨天我在Nexus4上获得了Android5.0的更新,并且altbeacon库停止了检测信标.似乎在监视和测距时,didEnterRegion和didRangeBeaconsInRegion都没有被调用.即使RadiusNetworks的Locate应用程序现在表现不同,一旦检测到信标的值,它们就不再得到更新,并且通常看起来好像信标超出了范围.我注意到的一点是,现在在logcat中出现以下行“B

  2. android – react-native动态更改响应者

    我正在使用react-native进行Android开发.我有一个视图,如果用户长按,我想显示一个可以拖动的动画视图.我可以使用PanResponder实现这一点,它工作正常.但我想要做的是当用户长按时,用户应该能够继续相同的触摸/按下并拖动新显示的Animated.View.如果您熟悉Google云端硬盘应用,则它具有类似的功能.当用户长按列表中的任何项目时,它会显示可拖动的项目.用户可以直接拖

  3. android – 是否有可能通过使用与最初使用的证书不同的证书对其进行签名来发布更新的应用程序

    是否可以通过使用与最初使用的证书不同的证书进行签名来发布Android应用程序的更新?我知道当我们尝试将这样的构建上传到市场时,它通常会给出错误消息.但有没有任何出路,比如将其标记为主要版本,指定市场中的某个地方?解决方法不,你不能这样做.证书是一种工具,可确保您是首次上传应用程序的人.所以总是备份密钥库!

  4. 如何检测Android中是否存在麦克风?

    ..所以我想在让用户访问语音输入功能之前检测麦克风是否存在.如何检测设备上是否有麦克风.谢谢.解决方法AndroidAPI参考:hasSystemFeature

  5. Android – 调用GONE然后VISIBLE使视图显示在错误的位置

    我有两个视图,A和B,视图A在视图B上方.当我以编程方式将视图A设置为GONE时,它将消失,并且它正下方的视图将转到视图A的位置.但是,当我再次将相同的视图设置为VISIBLE时,它会在视图B上显示.我不希望这样.我希望视图B回到原来的位置,这是我认为会发生的事情.我怎样才能做到这一点?编辑–代码}这里是XML:解决方法您可以尝试将两个视图放在RelativeLayout中并相对于彼此设置它们的位置.

  6. android – 获得一首歌的流派

    我如何阅读与歌曲相关的流派?我可以读这首歌,但是如何抓住这首歌的流派,它存放在哪里?解决方法检查此代码:

  7. android – 使用textShadow折叠工具栏

    我有一个折叠工具栏的问题,在展开状态我想在文本下面有一个模糊的阴影,我使用这段代码:用:我可以更改textColor,它可以工作,但阴影不起作用.我为阴影尝试了很多不同的值.是否可以为折叠文本投射阴影?

  8. android – 重用arm共享库

    我已经建立了armarm共享库.我有兴趣重用一个函数.我想调用该函数并获得返回值.有可能做这样的事吗?我没有任何头文件.我试过这个Android.mk,我把libtest.so放在/jni和/libs/armeabi,/lib/armeabi中.此时我的cpp文件编译,但现在是什么?我从objdump知道它的名字编辑:我试图用这个android.mk从hello-jni示例中添加prebuild库:它工作,但libtest.so相同的代码显示以下错误(启动时)libtest.so存在于libhello-j

  9. android – 为NumberPicker捕获键盘’Done’

    我有一个AlertDialog只有一些文本,一个NumberPicker,一个OK和一个取消.(我知道,这个对话框还没有做它应该保留暂停和恢复状态的事情.)我想在软键盘或其他IME上执行“完成”操作来关闭对话框,就像按下了“OK”一样,因为只有一个小部件可以编辑.看起来处理IME“Done”的最佳方法通常是在TextView上使用setonEditorActionListener.但我没有任何Te

  10. android – 想要在调用WebChromeClient#onCreateWindow时知道目标URL

    当我点击一个带有target=“_blank”属性的超链接时,会调用WebChromeClient#onCreateWindow,但我找不到新的窗口将打开的新方法?主页url是我唯一能知道的东西?我想根据目标网址更改应用行为.任何帮助表示赞赏,谢谢!

返回
顶部