{"id":72,"date":"2017-03-12T10:54:05","date_gmt":"2017-03-12T09:54:05","guid":{"rendered":"http:\/\/uc-mobileapps.com\/de\/?page_id=72"},"modified":"2021-01-30T14:07:03","modified_gmt":"2021-01-30T13:07:03","slug":"one-to-many-relation-dataprovider","status":"publish","type":"page","link":"http:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/beispiel-1\/one-to-many-relation-dataprovider\/","title":{"rendered":"Beispiel 1 &#8211; One-to-many Relation ContentProvider"},"content":{"rendered":"<p>In der kommerziellen Version kann auch der DataProvider aus dem Meta-Modell erstellt werden. Es werden dabei die Create\/Read\/Update\/Delete Methoden zur Verf\u00fcgung gestellt und die n\u00f6tigen <code class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">UriMatcher<\/code> erstellt, jeweils mit der Notification-API und f\u00fcr effiziente Bulk-Operationen auch ohne. Das Beispiel veranschaulicht wie ein die DataProvider-API ausformuliert aussehen kann. Die ben\u00f6tigten SQL-Parameter f\u00fcr die Prim\u00e4rschl\u00fcssel werden nat\u00fcrlich auch entsprechend zum Datenmodell erstellt und sichern so eine Schnittstellenkonsistenz f\u00fcr gr\u00f6\u00dfere Datenmodelle.<\/p>\n<p>Das System erstellt beliebig viele DataProvider und gruppiert darin jeweils die gew\u00fcnschten Gesch\u00e4ftsobjekte. Dazu werden die zu den Schemata passenden Content-URI definiert. Die <code class=\"EnlighterJSRAW\" data-enlighter-language=\"Java\">notify<\/code>-Schnittstelle der ContentResolver ist implementiert muss aber nicht genutzt werden, etwa um effizient Batch-Updates ohne \u00fcberm\u00e4\u00dfig h\u00e4ufige Events durchzuf\u00fchren.<\/p>\n<div class=\"osc-res-tab tabbable   osc-tabs-left\"><div style=\"clear:both;width: 100%;\"><ul class=\"nav osc-res-nav nav-tabs osc-tabs-left-ul\" id=\"oscitas-restabs-1-one-to-many-relation-dataprovider-77455\"><li class=\"active\"><a href=\"#ert_pane1-0\" data-toggle=\"tab\">ContentProvider Quelltext<\/a><\/li><li class=\"\"><a href=\"#ert_pane1-1\" data-toggle=\"tab\">insert<\/a><\/li><li class=\"\"><a href=\"#ert_pane1-2\" data-toggle=\"tab\">query<\/a><\/li><li class=\"\"><a href=\"#ert_pane1-3\" data-toggle=\"tab\">update<\/a><\/li><li class=\"\"><a href=\"#ert_pane1-4\" data-toggle=\"tab\">delete<\/a><\/li><\/ul><\/div><div style=\"clear:both;width: 100%;\"><ul class=\"tab-content\" id=\"oscitas-restabcontent-1-one-to-many-relation-dataprovider-77455\"><li class=\"tab-pane active\" id=\"ert_pane1-0\"><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">package com.uc_mobileapps.seifesample01.provider;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.List;\n\nimport android.database.sqlite.SQLiteDatabase;\nimport android.database.sqlite.SQLiteQueryBuilder;\n\nimport com.uc_mobileapps.seifesample01.db.CustomerDB;\nimport android.content.ContentProvider;\nimport android.content.ContentResolver;\nimport android.content.ContentUris;\nimport android.content.ContentValues;\nimport android.content.UriMatcher;\nimport android.database.Cursor;\nimport android.net.Uri;\n\nimport com.uc_mobileapps.seifesample01.bo.Customer;\nimport com.uc_mobileapps.seifesample01.bo.schema.CustomerSchema;\n\n\/**\n * Content provider implementation for the list of shortcuts\n *\/\npublic class CustomerProvider extends ContentProvider {\n\n  \/**\n   * Pass a query limit to the provider\n   *\/\n  public static final String QUERY_PARAMETER_LIMIT = \"_limit\";\n\n  \/**\n   * Pass a having clause to the provider\n   *\/\n  public static final String QUERY_PARAMETER_HAVING = \"_having\";\n\n  \/**\n   * Pass a group by to the provider\n   *\/\n  public static final String QUERY_PARAMETER_GROUP_BY = \"_groupby\";\n\n\n  \/* (non-Javadoc)\n   * @see android.content.ContentProvider#onCreate()\n   *\/\n  @Override\n  public boolean onCreate() {\n    if (!seifeCreate()) {\n      return false;\n    }\n    return true;\n  }\n\n  \/\/{{@begin seife autogenerated\n  \n  \/**\n   * Content-Provider Authority for Uris (is in the demo package for historical reasons)\n   *\/\n  public static final String AUTHORITY = \"com.uc_mobileapps.seifesample01.provider\";\n\n  \/**\n   * Better don't use this directly, use {@link #getContentUriCustomer()} instead\n   *\/\n  public static Uri CONTENT_URI_CUSTOMER = Uri.parse(\"content:\/\/\" + AUTHORITY + \"\/\" + CustomerSchema.TBL_CUSTOMER);\n\n  \/**\n   * Uri for shortcut\n   *\/\n  public static Uri getContentUriCustomer() {\n    return CONTENT_URI_CUSTOMER;\n  }\n  \n  \/**\n   * Explicit URI configuration\n   *\/\n  public static void setContentUriCustomer(Uri uri) {\n    CONTENT_URI_CUSTOMER = uri;\n  }\n\n\n  \/**\n   * Code for urimatcher of the content provider\n   *\/\n  protected static final int URI_CODE_CUSTOMER = 0;\n  \/**\n   * Customer by id uri\n   *\/\n  protected static final int URI_CODE_CUSTOMER_ID = 1;\n\n  \/**\n   * Customer for batch updates\n   *\/\n  protected static final int URI_CODE_CUSTOMER_NO_NOTIFY_ID = 2;\n\n  \n\n  \/**\n   * The database helper class where the table definitions reside\n   *\/\n  private com.uc_mobileapps.seifesample01.db.CustomerDB dbHelper;\n\n  \/**\n   * Autogenerated provider onCreate\n   * @see CustomerProvider#onCreate()\n   *\/\n  public boolean seifeCreate() {\n    dbHelper = new com.uc_mobileapps.seifesample01.db.CustomerDB(getContext());\n    return true;\n  }\n\n  \/**\n   * Uri Matcher of the content provider\n   *\/\n  private UriMatcher uriMatcher;\n\n  \/**\n   * @return\n   *\/\n  protected UriMatcher getUriMatcher() {\n    if (uriMatcher == null) {\n      uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);\n\n      uriMatcher.addURI(AUTHORITY, CustomerSchema.TBL_CUSTOMER, URI_CODE_CUSTOMER);\n      uriMatcher.addURI(AUTHORITY, CustomerSchema.TBL_CUSTOMER + \"\/#\", URI_CODE_CUSTOMER_ID);\n      uriMatcher.addURI(AUTHORITY, CustomerSchema.TBL_CUSTOMER + \"\/batch\/#\", URI_CODE_CUSTOMER_NO_NOTIFY_ID);\n    }\n    return uriMatcher;\n  }\n  \n  \/**\n   * (non-Javadoc)\n   *\/\n  @Override\n  public String getType(Uri uri) {\n    switch (getUriMatcher().match(uri)) {\n \n    case URI_CODE_CUSTOMER:\n      return ContentResolver.CURSOR_DIR_BASE_TYPE + \"\/vnd.\" + Customer.class.getPackage() + \".\" + CustomerSchema.TBL_CUSTOMER;\n    case URI_CODE_CUSTOMER_ID:\n      return ContentResolver.CURSOR_ITEM_BASE_TYPE + \"\/vnd.\" + Customer.class.getPackage() + \".\" + CustomerSchema.TBL_CUSTOMER;\n    case URI_CODE_CUSTOMER_NO_NOTIFY_ID:\n      return ContentResolver.CURSOR_ITEM_BASE_TYPE + \"\/vnd.\" + Customer.class.getPackage() + \".\" + CustomerSchema.TBL_CUSTOMER;\n    }\n    return null;\n  }\n}\n<\/pre>\n<p><\/li><li class=\"tab-pane \" id=\"ert_pane1-1\"><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">  \/**\n   * Inserts a new object to the database\n   * @return the uri of the created object, null if the mandatory check failed \n   * @see android.content.ContentProvider\\#insert(android.net.Uri, android.content.ContentValues)\n   *\/\n  @Override\n  public Uri insert(Uri uri, ContentValues values) {\n    \n    SQLiteDatabase db = dbHelper.getWritableDatabase();\n    long rowId;\n    switch (getUriMatcher().match(uri))\n    {\n    case URI_CODE_CUSTOMER:\n      if (!CustomerSchema.instance().checkConstraints(values)) {\n        return null;\n      }\n      rowId = db.insert(CustomerSchema.TBL_CUSTOMER, null, values);\n      if (rowId &gt; 0) {\n        Uri resUri = ContentUris.withAppendedId(uri, rowId);\n        getContext().getContentResolver().notifyChange(resUri, null);\n        return resUri;\n      }\n      break;\n    case URI_CODE_CUSTOMER_ID: \/\/unimplemented since id is generated\n      break;\n    }\n    return null;\n  }\n}\n<\/pre>\n<p><\/li><li class=\"tab-pane \" id=\"ert_pane1-2\"><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">  \/* (non-Javadoc)\n   * @see android.content.ContentProvider\\#query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String)\n   *\/\n  @Override\n  public Cursor query(Uri uri, String[] projection, String selectionParam,\n      String[] selectionParamArgs, String sortOrder) {\n    StringBuilder selection = new StringBuilder();;\n    List&lt;String&gt; selectionArgs = new ArrayList&lt;String&gt;();\n    \n    String groupBy = uri.getQueryParameter(QUERY_PARAMETER_GROUP_BY);\n    String having = uri.getQueryParameter(QUERY_PARAMETER_HAVING);\n    String limit = uri.getQueryParameter(QUERY_PARAMETER_LIMIT);\n    SQLiteQueryBuilder qb = new SQLiteQueryBuilder();\n\n    int matchId = getUriMatcher().match(uri);\n    switch (matchId)\n    {\n    case URI_CODE_CUSTOMER:\n      qb.setTables(CustomerSchema.TBL_CUSTOMER);\n      selection.append(selectionParam);\n      selectionArgs = Arrays.asList(selectionParamArgs);\n    break;\n    case URI_CODE_CUSTOMER_ID:\n    case URI_CODE_CUSTOMER_NO_NOTIFY_ID:\n      qb.setTables(CustomerSchema.TBL_CUSTOMER);\n      selection\n      .append(CustomerSchema.COL_ID + \" = ?\");\t\t\t\n            selectionArgs.add(uri.getQueryParameter(CustomerSchema.COL_ID));\n    break;\n    default:\n      return null;\n    }\n\n    Cursor c = qb.query(dbHelper.getReadableDatabase(), projection, selection.toString(), selectionArgs.toArray(new String[selectionArgs.size()]), groupBy, having, sortOrder, limit);\n\n    c.setNotificationUri(getContext().getContentResolver(), uri);\n    return c;\n  }<\/pre>\n<p><\/li><li class=\"tab-pane \" id=\"ert_pane1-3\"><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">  \/* (non-Javadoc)\n   * @see android.content.ContentProvider\\#update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[])\n   *\/\n  @Override\n  public int update(Uri uri, ContentValues values, String selection,\n      String[] selectionArgs) \n  {\n    int rowsAffected = 0;\n    SQLiteDatabase db = dbHelper.getWritableDatabase();\n    int matchId = getUriMatcher().match(uri);\n    String[] primaryKey;\n    switch (matchId)\n    {\n    case URI_CODE_CUSTOMER_ID:\n    case URI_CODE_CUSTOMER_NO_NOTIFY_ID:\n      primaryKey = new String[] { uri.getQueryParameter(CustomerSchema.COL_ID) };\n      rowsAffected = db.update(CustomerSchema.TBL_CUSTOMER, values,  CustomerSchema.COL_ID + \" = ?\" , primaryKey);\n      break;\n    default:\n      break;\n    }\n    if (rowsAffected &gt; 0) {\n      switch (matchId) {\n      case URI_CODE_CUSTOMER_ID:\n        getContext().getContentResolver().notifyChange(uri, null);\t\t\t\n        break;\n      default: \n        break;\n      }\n    }\n    \n    return rowsAffected;\n  }\n<\/pre>\n<p><\/li><li class=\"tab-pane \" id=\"ert_pane1-4\"><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">\/* (non-Javadoc)\n   * @see android.content.ContentProvider\\#delete(android.net.Uri, java.lang.String, java.lang.String[])\n   *\/\n  @Override\n  public int delete(Uri uri, String selection, String[] selectionArgs) {\n\n    int rowsAffected = 0;\n\n    SQLiteDatabase db = dbHelper.getWritableDatabase();\n    String[] primaryKey;\n    int matchId = getUriMatcher().match(uri);\n    switch (matchId)\n    {\n    case URI_CODE_CUSTOMER_ID:\n    case URI_CODE_CUSTOMER_NO_NOTIFY_ID:\n      primaryKey = new String[] { uri.getQueryParameter(CustomerSchema.COL_ID) };\n      rowsAffected = db.delete(CustomerSchema.TBL_CUSTOMER,CustomerSchema.COL_ID + \" = ?\" , primaryKey);\n      if (rowsAffected &gt; 0) {\n        getContext().getContentResolver().notifyChange(uri, null);\t\t\t\n      }\n      break;\n    default:\n      break;\n    }\n\n    if (rowsAffected &gt; 0) {\n      switch (matchId) {\n      case URI_CODE_CUSTOMER_ID:\n        getContext().getContentResolver().notifyChange(uri, null);\t\t\t\n        break;\n      default: \n        break;\n      }\n    }\n    return rowsAffected;\n  }<\/pre>\n<p><\/li><\/ul><\/div><\/div>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In der kommerziellen Version kann auch der DataProvider aus dem Meta-Modell erstellt werden. Es werden dabei die Create\/Read\/Update\/Delete Methoden zur Verf\u00fcgung gestellt und die n\u00f6tigen UriMatcher erstellt, jeweils mit der Notification-API und f\u00fcr effiziente Bulk-Operationen auch ohne. Das Beispiel veranschaulicht wie ein die DataProvider-API ausformuliert aussehen kann. Die ben\u00f6tigten SQL-Parameter f\u00fcr die Prim\u00e4rschl\u00fcssel werden nat\u00fcrlich &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"http:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/beispiel-1\/one-to-many-relation-dataprovider\/\"> <span class=\"screen-reader-text\">Beispiel 1 &#8211; One-to-many Relation ContentProvider<\/span> Weiterlesen &raquo;<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"parent":173,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v18.5.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Beispiel 1 - One-to-many Relation ContentProvider - UC Mobile Apps<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/beispiel-1\/one-to-many-relation-dataprovider\/\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"http:\/\/uc-mobileapps.com\/de\/#organization\",\"name\":\"UC Mobile Apps\",\"url\":\"http:\/\/uc-mobileapps.com\/de\/\",\"sameAs\":[],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/uc-mobileapps.com\/de\/#logo\",\"inLanguage\":\"de-DE\",\"url\":\"http:\/\/uc-mobileapps.com\/de\/wp-content\/uploads\/sites\/2\/2018\/07\/cropped-UC-Logo.png\",\"contentUrl\":\"http:\/\/uc-mobileapps.com\/de\/wp-content\/uploads\/sites\/2\/2018\/07\/cropped-UC-Logo.png\",\"width\":512,\"height\":512,\"caption\":\"UC Mobile Apps\"},\"image\":{\"@id\":\"http:\/\/uc-mobileapps.com\/de\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/uc-mobileapps.com\/de\/#website\",\"url\":\"http:\/\/uc-mobileapps.com\/de\/\",\"name\":\"UC Mobile Apps\",\"description\":\"Innovative Softwareentwicklung und mobile Anwendungen\",\"publisher\":{\"@id\":\"http:\/\/uc-mobileapps.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/uc-mobileapps.com\/de\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de-DE\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/beispiel-1\/one-to-many-relation-dataprovider\/#webpage\",\"url\":\"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/beispiel-1\/one-to-many-relation-dataprovider\/\",\"name\":\"Beispiel 1 - One-to-many Relation ContentProvider - UC Mobile Apps\",\"isPartOf\":{\"@id\":\"http:\/\/uc-mobileapps.com\/de\/#website\"},\"datePublished\":\"2017-03-12T09:54:05+00:00\",\"dateModified\":\"2021-01-30T13:07:03+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/beispiel-1\/one-to-many-relation-dataprovider\/#breadcrumb\"},\"inLanguage\":\"de-DE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/beispiel-1\/one-to-many-relation-dataprovider\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/beispiel-1\/one-to-many-relation-dataprovider\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/uc-mobileapps.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Android Code Generator f\u00fcr SQLite and DataProvider Schnittstellen\",\"item\":\"http:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Beispiel 1\",\"item\":\"http:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/beispiel-1\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Beispiel 1 &#8211; One-to-many Relation ContentProvider\"}]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Beispiel 1 - One-to-many Relation ContentProvider - UC Mobile Apps","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/beispiel-1\/one-to-many-relation-dataprovider\/","twitter_misc":{"Gesch\u00e4tzte Lesezeit":"4 Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"http:\/\/uc-mobileapps.com\/de\/#organization","name":"UC Mobile Apps","url":"http:\/\/uc-mobileapps.com\/de\/","sameAs":[],"logo":{"@type":"ImageObject","@id":"http:\/\/uc-mobileapps.com\/de\/#logo","inLanguage":"de-DE","url":"http:\/\/uc-mobileapps.com\/de\/wp-content\/uploads\/sites\/2\/2018\/07\/cropped-UC-Logo.png","contentUrl":"http:\/\/uc-mobileapps.com\/de\/wp-content\/uploads\/sites\/2\/2018\/07\/cropped-UC-Logo.png","width":512,"height":512,"caption":"UC Mobile Apps"},"image":{"@id":"http:\/\/uc-mobileapps.com\/de\/#logo"}},{"@type":"WebSite","@id":"http:\/\/uc-mobileapps.com\/de\/#website","url":"http:\/\/uc-mobileapps.com\/de\/","name":"UC Mobile Apps","description":"Innovative Softwareentwicklung und mobile Anwendungen","publisher":{"@id":"http:\/\/uc-mobileapps.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/uc-mobileapps.com\/de\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de-DE"},{"@type":"WebPage","@id":"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/beispiel-1\/one-to-many-relation-dataprovider\/#webpage","url":"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/beispiel-1\/one-to-many-relation-dataprovider\/","name":"Beispiel 1 - One-to-many Relation ContentProvider - UC Mobile Apps","isPartOf":{"@id":"http:\/\/uc-mobileapps.com\/de\/#website"},"datePublished":"2017-03-12T09:54:05+00:00","dateModified":"2021-01-30T13:07:03+00:00","breadcrumb":{"@id":"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/beispiel-1\/one-to-many-relation-dataprovider\/#breadcrumb"},"inLanguage":"de-DE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/beispiel-1\/one-to-many-relation-dataprovider\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/beispiel-1\/one-to-many-relation-dataprovider\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/uc-mobileapps.com\/de\/"},{"@type":"ListItem","position":2,"name":"Android Code Generator f\u00fcr SQLite and DataProvider Schnittstellen","item":"http:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/"},{"@type":"ListItem","position":3,"name":"Beispiel 1","item":"http:\/\/uc-mobileapps.com\/de\/android-sqlite-dataprovider-code-generator\/beispiel-1\/"},{"@type":"ListItem","position":4,"name":"Beispiel 1 &#8211; One-to-many Relation ContentProvider"}]}]}},"_links":{"self":[{"href":"http:\/\/uc-mobileapps.com\/de\/wp-json\/wp\/v2\/pages\/72"}],"collection":[{"href":"http:\/\/uc-mobileapps.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/uc-mobileapps.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/uc-mobileapps.com\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/uc-mobileapps.com\/de\/wp-json\/wp\/v2\/comments?post=72"}],"version-history":[{"count":11,"href":"http:\/\/uc-mobileapps.com\/de\/wp-json\/wp\/v2\/pages\/72\/revisions"}],"predecessor-version":[{"id":228,"href":"http:\/\/uc-mobileapps.com\/de\/wp-json\/wp\/v2\/pages\/72\/revisions\/228"}],"up":[{"embeddable":true,"href":"http:\/\/uc-mobileapps.com\/de\/wp-json\/wp\/v2\/pages\/173"}],"wp:attachment":[{"href":"http:\/\/uc-mobileapps.com\/de\/wp-json\/wp\/v2\/media?parent=72"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}