{"id":36427340,"url":"https://github.com/reforms/reforms","last_synced_at":"2026-01-11T18:03:39.117Z","repository":{"id":57722353,"uuid":"79107299","full_name":"reforms/reforms","owner":"reforms","description":"Reforms is repository for framework that help in development with SQL and ORM technics","archived":false,"fork":false,"pushed_at":"2017-12-03T13:18:22.000Z","size":1205,"stargazers_count":7,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-04-28T04:15:56.217Z","etag":null,"topics":["jdbc","jdbc-framework","jdbc-orm","jdbc-orm-framework","orm-framework","sql","sql-parser"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/reforms.png","metadata":{"files":{"readme":"Readme.asciidoc","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-01-16T10:23:21.000Z","updated_at":"2024-04-28T04:15:56.218Z","dependencies_parsed_at":"2022-08-29T23:01:32.941Z","dependency_job_id":null,"html_url":"https://github.com/reforms/reforms","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/reforms/reforms","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reforms%2Freforms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reforms%2Freforms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reforms%2Freforms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reforms%2Freforms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reforms","download_url":"https://codeload.github.com/reforms/reforms/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reforms%2Freforms/sbom","scorecard":{"id":768698,"data":{"date":"2025-08-11","repo":{"name":"github.com/reforms/reforms","commit":"2fba99a081375c2bc40a4ba13aa650e9ae2e2668"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.6,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-23T01:37:23.200Z","repository_id":57722353,"created_at":"2025-08-23T01:37:23.200Z","updated_at":"2025-08-23T01:37:23.200Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28317191,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T14:58:17.114Z","status":"ssl_error","status_checked_at":"2026-01-11T14:55:53.580Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jdbc","jdbc-framework","jdbc-orm","jdbc-orm-framework","orm-framework","sql","sql-parser"],"created_at":"2026-01-11T18:03:38.214Z","updated_at":"2026-01-11T18:03:39.112Z","avatar_url":"https://github.com/reforms.png","language":"Java","readme":"////\nLicense is free for everything\n////\nRefOrms\n-------\nHello, its RefOrms framework.\nRefOrms is SQL-oriented JDBC framework, similar to Spring Framework JDBC but having several advantages over it.\nSee link:https://htmlpreview.github.io/?https://github.com/reforms/ReformsDoc/blob/master/doc.html[RefOrms Manual] with html preview.\n\nWhat the project does:\n~~~~~~~~~~~~~~~~~~~~~\n[square]\n* Project helps you map your SQL query to your ORM data.\n* Project contains SQL-92 parser to select, update, insert and delete queries.\n\nWhy the project is useful:\n~~~~~~~~~~~~~~~~~~~~~~~~~\n[square]\n* It's powerfull instrument which helps you to take all from SQL and map it to ORM.\n* It's not hibernate, it's not DDL (like JOOQ) it's only SQL to ORM.\n\nHow users can get started with the project:\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n[source,xml]\n----\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.reforms\u003c/groupId\u003e\n    \u003cartifactId\u003ereforms\u003c/artifactId\u003e\n    \u003cversion\u003e2017.08.17\u003c/version\u003e\n\u003c/dependency\u003e\n----\n\nShort example usaging reforms framework in interface programming style:\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n[source,java]\n----\n// Your IClientDao dao interface\npublic interface IClientDao {\n\n    @TargetQuery(\"SELECT id, name, state FROM clients WHERE name = ?\")\n    public Client findClientByName(String clientName);\n}\n// Your needs\npublic class ClientHelper {\n\n    public void doSomeWork(java.sql.Connection connection) throws Exception {\n        // ... code before\n        IClientDao clientdao = com.reforms.orm.OrmDao.createDao(IClientDao.class, connection);\n        Client client = clientdao.findClientByName(\"Gaius Iulius Caesar\");\n        // ... code after\n    }\n}\n----\n\nConcept of Usage as Best Practices:\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n[square]\n* One dependency: reforms.jar for all needs\n* One class com.reforms.orm.OrmDao for most of needs\n* Usaging annotated code as little as possible\n* Simple, but powerfull sintaxes for mapping selecting columns to orm fields\n* Reusable SQL query for difference filters\n* Usaging Interface programming style as technic of coding\n\nJob for You and Job for RefOrms:\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n[options=\"header,middle,autowidth\"]\n|===\n| N | Task | Your job | RefOrms job | Example and Details\n| 1 | ORM class | + | - | \u003c\u003cE1,_Clien.java_\u003e\u003e\n| 2 | SQL query | + | - | _SELECT, INSERT, UPDATE, DELETE queries_\n| 3 | DAO class or DAO interface | + | - | \u003c\u003cE4,_ClienDao.java_\u003e\u003e\n| 4 | Parse SQL query | - | + | Building tree expressions for analysis\n| 5 | Setting values to PreparedStatement | - | + | _ps.setLong(\"id\", 1L);_\n| 6 | Reading values from ResultSet | - | + | _rs.getLong(\"id\");_\n| 7 | Map ResultSet to ORM class | - | + | Using tree expressions convert _rs_ to _ORM_\n|===\n\nStrengths and Features:\n~~~~~~~~~~~~~~~~~~~~~~~\n[square]\n* Selectable columns:\n** Filtering selectable columns in _SELECT_ clause before SQL query execute\n** Mapping selectable columns to _orm fields_ inside your SQL query, using framework rules\n** Mapping selectable columns to _orm fields_ inside your SQL query, using your custom rules\n** Mapping selectable columns to _map data_ inside your SQL query, using framework rules\n** Mapping selectable columns to _map data_ inside your SQL query, using your custom rules\n* Managing of schema inside your SQL query\n* Filtering data in _WHERE/HAVING_ clause\n** _Static_ filters - required filters inside your SQL query: if filter values absent exception will occure\n** _Dynamic_ filters - optional filters inside your SQL query: if filter values absent SQL query will be changed and SQL expressions for missing filter values will be cut from SQL query\n** Filters are supporting _BEAN way_, _DIRECT way_ or _MAP way_\n* Paging data for some dialect of sql\n\nSintax rules for mapping selecting columns to orm fields inside your SQL query:\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nAt first, take a look at SQL query below\n[source,sql]\n----\nSELECT client_id, CNAME, state AS client_state FROM clients\n----\nColumn name map to orm field name use next rules:\n[start]\n1. _Under_score_ column to camelCase field: _client_id_ -\u003e clientId\n2. _UPPERCASE_ column to lowercase field: _CNAME_ -\u003e cname\n3. _AS clause statement_ has highest priority then column: pass:q[\u003cstrike\u003estate\u003c/strike\u003e] _client_state_  -\u003e clientState. Be careful, as clause _name_ converting to field name using _under_score_ to _camelCase_ rule *only*\n[end]\n\nAdapting column type to orm field type goes through next phases:\n[start]\n1. Determination of type to reading value from ResultSet - base on syntax rules in select statement\n2. Converting value of this type to the relevant field type of orm - base on syntax rules in select statement\n[end]\n\nAnd\n[start=3]\n3. Always base on syntax rules in select statement inside _AS clause_\n4. Аbsolutely ignoring of column type in your db\n5. Only depends on orm field type\n[end]\n\nExample? At first, take a look at SQL query below\n[source,sql]\n----\nSELECT client_id, client_id AS id, act_time AS t#logTime FROM clients\n----\nand orm class\n[source,java]\n----\nclass Client {\n    // ....\n    int clientId;\n    long id;\n    java.util.Date logTime;\n    // ....\n}\n----\n[start]\n1. Column expression '_client_id_' will reading from ResultSet using clientId field type - int. Java code equivalent: _rs.getInt(1);_\n2. Column expression '_client_id AS id_' will reading from ResultSet using id field type - long. Java code equivalent: _rs.getLong(2);_\n3. Column expression '_act_time AS t#logTime_' will reading from ResultSet using *t#* directive wich mean 'read as java.sql.Timestamp' and convert read value to java.util.Date, because logTime field declared with this type. Java code equivalent: _new java.util.Date(rs.getTimestamp(3).getTime());_\n[end]\n\nAll directives see in table below\n[options=\"header,middle,autowidth\"]\n|===\n| Directive | Java Type\n|  z | boolean\n|  y | byte\n|  x | short\n|  i | int\n|  f | float\n|  w | double\n|  l | long\n|  e | java.lang.Enum (user data concrete type)\n|  s or nothing | java.lang.String (default type for reporting)\n|  n | java.math.BigDecimal\n|  I | java.math.BigInteger\n|  d | java.sql.Date\n|  v | java.sql.Time\n|  t | java.sql.Timestamp\n|  a | java.io.InputStream as AsciiStream\n|  b | java.io.InputStream as BinaryStream\n|  u | User Custome Type, need Registry IReportValueConverter\n|===\nExpected that directive will rarely be used and mainly for date, stream and user types.\n\nSintax rules for filters:\n~~~~~~~~~~~~~~~~~~~~~~~~~\nAt first, take a look at SQL query below\n[source,sql]\n----\nSELECT id, name, state FROM clients WHERE id = ?\n----\nIts SQL query in common style for filtering result by id. If we use RefOrms framework terminology we can say that query contains static (_required_) filter by id. And if we use RefOrms framework we can (although not necessarily) rewrite SQL query like this:\n[source,sql]\n----\nSELECT id, name, state FROM clients WHERE id = :id\n----\nIt's like Hibernate or Spring way. What happens, if :id filter value will be absent? Exception occur. And it's correct. But, if we have filter that can be or not to be?\n[source,sql]\n----\nSELECT id, name, state, act_time FROM clients WHERE act_time \u003e= ? AND act_time \u003c= ?\n----\nWhat then? Then the game enters the dynamic filters. How? Easy.\n[source,sql]\n----\nSELECT id, name, state, act_time FROM clients WHERE act_time \u003e= ::begin_from AND act_time \u003c= ::end_to\n----\nDouble colon is way to use dynamic filters. What happens, if :begin_from will be absent, but :end_to  will present? Like below\n[source,sql]\n----\nSELECT id, name, state, act_time FROM clients WHERE act_time \u003c= ?\n----\nIf both will absent?\n[source,sql]\n----\nSELECT id, name, state, act_time FROM clients\n----\nYes. SQL query was modifed. And it's powerfull side of RefOrms framework. You don't need to construct your sql query using _if statement_ in java code. You only declare dynamic or static filters inside SQL query. RefOrms framework supports all SQL-92 predicates (excluding OVERLAPS and MATCH) with dynamic filters. Few examples\n[source,sql]\n----\n-- 1. IN predicate will be removed if states filter will be absent\nSELECT id, name, state FROM clients WHERE state IN (::states)\n\n-- 2. LIKE predicate will be removed if name filter will be absent\nSELECT id, name, state FROM clients WHERE name LIKE ::name\n\n-- 3. VALUES block predicate will be narrowed down if some filters will be absent OR removed if all filters will be absent\nSELECT id, name, state FROM clients WHERE (id, name) = (::id, ::name)\n\n-- and so on\n----\n\nFull Example of usage\n~~~~~~~~~~~~~~~~~~~~~\n[[E1]]*1. Your ORM*\n[source,java]\n----\n package com.reforms.example;\n\n public class Client {\n\n    private long id;\n\n    private String name;\n\n    private ClientState state;\n\n    public long getId() {\n        return id;\n    }\n\n    public void setId(long id) {\n        this.id = id;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    public ClientState getState() {\n        return state;\n    }\n\n    public void setState(ClientState state) {\n        this.state = state;\n    }\n}\n----\n*2. Your ENUM (part of orm)*\n[source,java]\n----\npackage com.reforms.example;\n\nimport com.reforms.ann.TargetField;\nimport com.reforms.ann.TargetMethod;\n\npublic enum ClientState {\n    NEW(0),\n    ACTIVE(1),\n    BLOCKED(2);\n\n    @TargetField\n    private int state;\n\n    private ClientState(int state) {\n        this.state = state;\n    }\n\n    public int getState() {\n        return state;\n    }\n\n    @TargetMethod\n    public static ClientState getClientState(int state) {\n        for (ClientState clientState : values()) {\n            if (clientState.state == state) {\n                return clientState;\n            }\n        }\n        throw new IllegalStateException(\"Unknown client with state \" + state);\n    }\n}\n----\n*3. Your ORM Handler (if need)*\n[source,java]\n----\npackage com.reforms.example;\n\nimport com.reforms.orm.dao.bobj.model.OrmHandler;\n\npublic class ClientHandler implements OrmHandler\u003cClient\u003e {\n\n    private int index;\n\n    @Override\n    public void startHandle() {\n        index = 0;\n        System.out.println(\"beging...\");\n    }\n\n    @Override\n    public boolean handleOrm(Client dbClient) {\n        index++;\n        System.out.println(\"Load client: \" + dbClient);\n        return true;\n    }\n\n    @Override\n    public void endHandle() {\n        System.out.println(\"end... Total: \" + index);\n    }\n}\n----\n[[E4]]*4. Your DAO*\n[source,java]\n----\npackage com.reforms.example;\n\nimport com.reforms.orm.OrmDao;\nimport com.reforms.orm.dao.bobj.model.OrmIterator;\n\nimport java.sql.Connection;\nimport java.util.List;\n\npublic class ClientDao {\n\n    // Reform api - dao\n    private OrmDao ormDao;\n\n    public ClientDao(Connection connection) {\n        ormDao = new OrmDao(connection);\n    }\n\n    // Load all active clients\n    private static final String SELECT_ACTIVE_CLIENTS_QUERY = \"SELECT id, name, state FROM clients WHERE state = ?\";\n\n    public List\u003cClient\u003e loadActiveClients() throws Exception {\n        return ormDao.selectList(Client.class, SELECT_ACTIVE_CLIENTS_QUERY, ClientState.ACTIVE);\n    }\n\n    // Load all clients\n    private static final String SELECT_ALL_CLIENTS_QUERY = \"SELECT id, name, state FROM clients\";\n\n    public OrmIterator\u003cClient\u003e loadClients() throws Exception {\n        return ormDao.selectIterator(Client.class, SELECT_ALL_CLIENTS_QUERY);\n    }\n\n    public void processClients(ClientHandler clientHandler) throws Exception {\n        ormDao.selectAndHandle(Client.class, SELECT_ALL_CLIENTS_QUERY, clientHandler);\n    }\n\n    // Find client using id\n    private static final String FIND_CLIENT_QUERY = \"SELECT id, name, state FROM clients WHERE id = ?\";\n\n    public Client findClient(long clientId) throws Exception {\n        return ormDao.select(Client.class, FIND_CLIENT_QUERY, clientId);\n    }\n\n    // Update client name and state\n    private static final String UPDATE_CLIENT_QUERY = \"UPDATE clients SET name = ?, state = ? WHERE id = ?\";\n\n    public int updateClientNameAndState(long clientId, String clientName, ClientState clientState) throws Exception {\n        return ormDao.update(UPDATE_CLIENT_QUERY, clientName, clientState, clientId);\n    }\n\n    // Delete client using id\n    private static final String DELETE_CLIENT_QUERY = \"DELETE FROM clients WHERE id = ?\";\n\n    public int deleteClient(long clientId) throws Exception {\n        return ormDao.delete(DELETE_CLIENT_QUERY, clientId);\n    }\n\n    // Insert new client\n    private static final String INSERT_CLIENT_QUERY = \"INSERT INTO clients (id, name, state) VALUES(?, ?, ?)\";\n\n    public void saveClient(long clientId, String clientName, ClientState clientState) throws Exception {\n        ormDao.insert(INSERT_CLIENT_QUERY, clientId, clientName, clientState);\n    }\n\n}\n----\n\nAny Examples\n~~~~~~~~~~~~\n\n*1. Mapping selecting column values to orm fields, in case, all orm field names differ from column names*\n[source,sql]\n----\nSELECT  cl.id AS cid:clientId,                  -- map column 'cl.id' to 'clientId' orm field\n                                                -- client.setClientId(cl.id);\n                                                -- cid - as clause name in result SQL query: SELECT cl.id AS cid,...\n        cl.name AS clientName,                  -- map column 'cl.name' to 'clientName' orm field\n                                                -- client.setClientName(cl.name);\n        addr.id AS clientAddress.addressId,     -- map column 'addr.id' to 'addressId' orm field inside of clientAddress orm\n                                                -- client.getClientAddress().setAddressId(addr.id);\n        addr.city AS clientAddress.refCity,     -- map column 'addr.city' to 'refCity' orm field inside of clientAddress orm\n                                                -- client.getClientAddress().setCity(addr.city)\n        addr.street AS clientAddress.refStreet, -- map column 'addr.street' to 'refStreet' orm field inside of clientAddress orm\n                                                -- client.getClientAddress().setRefstreet(addr.street)\n        cl.act_time AS t#logDate                -- map column 'cl.act_time' to 'logDate' orm field\n                                                -- client.setLogDate(cl.act_time);\n                                                -- t# - direct type of act_time - java.util.Date based on java.sql.Timestamp\n\n            FROM client AS cl,\n                 address AS addr\n----","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freforms%2Freforms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freforms%2Freforms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freforms%2Freforms/lists"}